Content-Type: multipart/related; start=; boundary=----------RCIbvvOjaJ8uSTfvfHqKc9 Content-Location: http://pubs.acs.org/toc/jmcmar/51/6 Subject: =?utf-8?Q?Journal=20of=20Medicinal=20Chemistry:=20Volume=2051,=20Issue=206=20(ACS=20Publications)?= MIME-Version: 1.0 ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=6.htm Content-Type: text/html; charset=UTF-8; name=6.htm Content-Id: Content-Location: http://pubs.acs.org/toc/jmcmar/51/6 Content-Transfer-Encoding: Quoted-Printable = = = = = Journal of Medicinal Chemistry: Volume 51, Issue 6 (ACS Publicat= ions) = = = = =
=
= =
= = = = = =

Table of Contents

= = = =
= = = = = = 3D"Journal Larger Cover = =
=
March 27, 2008
Volume 51, Issue 6
Pages 1505-1980
= = =

About the Cover: On the C= over. Crystal structure of HIV-1 reverse transcriptase complexed wi= th a benzimidazole nonnucleoside inhibitor that retains activity against= various mutant forms of the enzyme (Morningstar, M. L.; et al. J. M= ed. Chem. 2007, 50, 4003−4015).

= =
= = <= !-- Spider trap link --> =
=
3D"ACS indicates the article is freely available through sponsorship by t= he author or related funding agency. More about this program.
=
For Selected Articles:
=
= =

Perspective

addFigure('10.1021/jm7011408','/appl/lite= ratum/publisher/achs/journals/production/jmcmar/2008/jmcmar.2008.51.issu= e-6/jm7011408','jm-2007-011408_0023.gif');addFigure('10.1021/jm7011408','/appl/literatu= m/publisher/achs/journals/production/jmcmar/2008/jmcmar.2008.51.issue-6/= jm7011408','jm-2007-011408_0027.gif');= addFigure('10.1021/jm7011408','/appl/litera= tum/publisher/achs/journals/production/jmcmar/2008/jmcmar.2008.51.issue-= 6/jm7011408','jm-2007-011408_0066.gif');

<= a href=3D"/doi/abs/10.1021/jm7011408">Histone Deacetylase Inhibitors: Fr= om Bench to Clinic

Marielle Paris,= Marina Porcelloni, Monica Binaschi and Daniela Fattori
pp 1505&nda= sh;1529
Publication Date (Web): February 5, 2008 (Perspective)
DOI: 10.1021/jm7011408

Letters

Cytotoxic Simplified Tubulysin Analogues

Bhooma Raghavan, Ranganathan Balasubramanian, Jaeso= n C. Steele, Dan L. Sackett and Robert A. Fecik
pp 1530–1533<= div>Publication Date (Web): March 4, 2008 (Letter)
DOI:= 10.1021/jm701321p
<= div class=3D"icons">
3D"Subscriber Subscriber Access
3D"Figure"
Figure 1

Articles

addFigure('10.1021/jm0706618','/appl/lite= ratum/publisher/achs/journals/production/jmcmar/2008/jmcmar.2008.51.issu= e-6/jm0706618','jm-2007-006618_0005.gif');addFigure('10.1021/jm0706618','/appl/literatu= m/publisher/achs/journals/production/jmcmar/2008/jmcmar.2008.51.issue-6/= jm0706618','jm-2007-006618_0009.gif');

Molecular Determi= nants of the Anticonvulsant Felbamate Binding Site in the N-Methy= l-d-Aspartate Receptor

Huai-Ren Chang and Chung-Chin Kuo
pp 1534&nd= ash;1545
Publication Date (Web): February 27, 2008<= span class=3D"manType"> (Article)
DOI: 10.1021/jm0706618
<= div class=3D"articleLinksIcons"><= div class=3D"icons">
3D"Subscriber Subscriber Access
3D"Figure"
Figure 1

<= a href=3D"/doi/abs/10.1021/jm7011276">Development of Prodrug 4-Chloro-3-= (5-methyl-3-{[4-(2-pyrrolidin-1-ylethoxy)phenyl]amino}-1,2,4-benzotriazi= n-7-yl)phenyl Benzoate (TG100801): A Topically Administered Therapeutic = Candidate in Clinical Trials for the Treatment of Age-Related Macular De= generation

Moorthy S. S. Palanki, = Hideo Akiyama, Peter Campochiaro, Jianguo Cao, Chun P. Chow, Luis Dellam= ary, John Doukas, Richard Fine, Colleen Gritzen, John D. Hood, Steven Hu= , Shu Kachi, Xinshan Kang, Boris Klebansky, Ahmed Kousba, Dan Lohse, Chi= Ching Mak, Michael Martin, Andrew McPherson, Ved P. Pathak, Joel Renick= , Richard Soll, Naoyasu Umeda, Shiyin Yee, Katsutoshi Yokoi, Binqi Zeng,= Hong Zhu and Glenn Noronha
pp 1546–1559
Publicat= ion Date (Web): February 27, 2008 (Arti= cle)
DOI: 10.1021/jm7011= 276
3D"Figure"
=
Figure 1
=

Synthesis, Cannabinoid Recept= or Affinity, and Molecular Modeling Studies of Substituted 1-Aryl-5-(1H-pyrrol-1-yl)-1H-pyrazole-3-carboxamides

Romano Silvestri, Maria Grazia Cascio, Giuseppe La R= egina, Francesco Piscitelli, Antonio Lavecchia, Antonella Brizzi, Serena= Pasquini, Maurizio Botta, Ettore Novellino, Vincenzo Di Marzo and Feder= ico Corelli
pp 1560–1576
Publication Date (Web): = February 23, 2008 (Article)
DOI: 10.1021/jm070566z
Subscriber Access
3D"Figure"
Figure 1
=

Synthesis, Stability, and Antimicrobial Studi= es of Electronically Tuned Silver Acetate N-Heterocyclic Carbenes=

Khadijah M. Hindi, Tammy J. Sicil= iano, Semih Durmus, Matthew J. Panzner, Doug A. Medvetz, D. Venkat Reddy= , Lisa A. Hogue, Christine E. Hovis, Julia K. Hilliard, Rebekah J. Malle= t, Claire A. Tessier, Carolyn L. Cannon and Wiley J. Youngs
pp 157= 7–1583
Publication Date (Web): February 21, 2= 008 (Article)
DOI: 10.1021/jm0708679
=3D"Figure"
Figure 1
=
= addFigure('10.1021/jm700978a','/appl/litera= tum/publisher/achs/journals/production/jmcmar/2008/jmcmar.2008.51.issue-= 6/jm700978a','jm-2007-00978a_0005.gif');

<= a href=3D"/doi/abs/10.1021/jm700978a">Chemical Behavior and in Vitro Act= ivity of Mixed Phosphine Gold(I) Compounds on Melanoma Cell Lines
Francesco Caruso, Claudio Pettinari, Fra= ncesco Paduano, Raffaella Villa, Fabio Marchetti, Elena Monti and Miriam= Rossi
pp 1584–1591
Publication Date (Web): February 29, 2008 (Article)
DOI: 10.1021/jm700978a

Imidazo[2,1-b]thiazole System: A Scaffold Endowin= g Dihydropyridines with Selective Cardiodepressant Activity

Roberta Budriesi, Pierfranco Ioan, Alessandra = Locatelli, Sandro Cosconati, Alberto Leoni, Maria P. Ugenti, Aldo Andrea= ni, Rosanna Di Toro, Andrea Bedini, Santi Spampinato, Luciana Marinelli,= Ettore Novellino and Alberto Chiarini
pp 1592–1600
Publication Date (Web): February 28, 2008 (Article)
DOI: 10= .1021/jm070681+
3D"Figure"=
= Figure = 1
=

Synthesis and Biological Effects of c(Lys-Lys-Pro= -Tyr-Ile-Leu-Lys-Lys-Pro-Tyr-Ile-Leu) (JMV2012), a New Analogue of Neuro= tensin that Crosses the Blood−Brain Barrier

Pierre Bredeloux, Florine Cavelier, Isabelle Dubuc, Bert= rand Vivet, Jean Costentin and Jean Martinez
pp 1610–1616Publication Date (Web): March 6, 2008 (Article)
DOI: = 10.1021/jm700925k
<= div class=3D"icons">
3D"Subscriber Subscriber Access
3D"Figure"
Figure 1
<= div class=3D"articleBoxMeta">

= Synthesis and Cerebral Uptake of 1-(1-[11C]Methyl-1H-p= yrrol-2-yl)-2-phenyl-2-(1-pyrrolidinyl)ethanone, a Novel Tracer for Posi= tron Emission Tomography Studies of Monoamine Oxidase Type A

Svend Borup Jensen, Roberto Di Santo, Aage Kr= istian Olsen, Kasper Pedersen, Roberta Costi, Roberto Cirilli and Paul C= umming
pp 1617–1622
Publication Date (Web): February 29, 2008 (Article)
DOI: 10.1021/jm701378e

2′-Deoxy Cyclic Adenosine 5′-Diphosphate Ribos= e Derivatives: Importance of the 2′-Hydroxyl Motif for the Antagon= istic Activity of 8-Substituted cADPR Derivatives

Bo Zhang, Gerd K. Wagner, Karin Weber, Clive Garnham, An= thony J. Morgan, Antony Galione, Andreas H. Guse and Barry V. L. Potter<= /div>pp 1623–1636
Publication Date (Web): Feb= ruary 28, 2008 (Article)
DOI: 10.1021/jm7010386
=
=3D"ACS
=
3D"Figure"
Figure 1
addFigure('10.1021/jm701095m','/appl/liter= atum/publisher/achs/journals/production/jmcmar/2008/jmcmar.2008.51.issue= -6/jm701095m','jm-2007-01095m_0007.gif');addFigure('10.1021/jm701095m','/appl/literatum= /publisher/achs/journals/production/jmcmar/2008/jmcmar.2008.51.issue-6/j= m701095m','jm-2007-01095m_0011.gif');
=

Structure-Based Design of Novel 2-Amino-6-phenyl-pyrimido[5′,4= 242;:5,6]pyrimido[1,2-a]benzimidazol-5(6H)-ones as Potent = and Orally Active Inhibitors of Lymphocyte Specific Kinase (Lck): Synthe= sis, SAR, and In Vivo Anti-Inflammatory Activity

Matthew W. Martin, John Newcomb, Joseph J. Nunes, Christi= na Boucher, Lilly Chai, Linda F. Epstein, Theodore Faust, Sylvia Flores,= Paul Gallant, Anu Gore, Yan Gu, Faye Hsieh, Xin Huang, Joseph L. Kim, S= cot Middleton, Kurt Morgenstern, Antonio Oliveira-dos-Santos, Vinod F. P= atel, David Powers, Paul Rose, Yanyan Tudor, Susan M. Turci, Andrew A. W= elcher, Debra Zack, Huilin Zhao, Li Zhu, Xiaotian Zhu, Chiara Ghiron, Mo= nika Ermann, David Johnston and Carl-Gustaf Pierre Saluste
pp 1637&= ndash;1648
Publication Date (Web): February 16, 200= 8 (Article)
DOI: 10.1021/jm701095m
3D=
Figure 1<= /div>
addFigure('10.1021/jm701097z','/appl/liter= atum/publisher/achs/journals/production/jmcmar/2008/jmcmar.2008.51.issue= -6/jm701097z','jm-2007-01097z_0001.gif');addFigure('10.1021/jm701097z','/appl/literatum= /publisher/achs/journals/production/jmcmar/2008/jmcmar.2008.51.issue-6/j= m701097z','jm-2007-01097z_0005.gif');

Nap= hthamides as Novel and Potent Vascular Endothelial Growth Factor Recepto= r Tyrosine Kinase Inhibitors: Design, Synthesis, and Evaluation

=
Jean-Christophe Harmange, Matthew M. Weiss= , Julie Germain, Anthony J. Polverino, George Borg, James Bready, Danlin= Chen, Deborah Choquette, Angela Coxon, Tom DeMelfi, Lucian DiPietro, Ni= cholas Doerr, Juan Estrada, Julie Flynn, Russell F. Graceffa, Shawn P. H= arriman, Stephen Kaufman, Daniel S. La, Alexander Long, Matthew W. Marti= n, Sesha Neervannan, Vinod F. Patel, Michele Potashman, Kelly Regal, Phi= llip M. Roveto, Michael L. Schrag, Charlie Starnes, Andrew Tasker, Yohan= nes Teffera, Ling Wang, Ryan D. White, Douglas A. Whittington and Roger = Zanon
pp 1649–1667
Publication Date (Web): March 7, 2008 (Article)
DOI: 10.1021/jm701097z
3D"Subscriber Subscriber Access
3D"Figure"
Figure 1

Evaluat= ion of a Series of Naphthamides as Potent, Orally Active Vascular Endoth= elial Growth Factor Receptor-2 Tyrosine Kinase Inhibitors

Matthew M. Weiss, Jean-Christophe Harmange, Anth= ony J. Polverino, David Bauer, Loren Berry, Virginia Berry, George Borg,= James Bready, Danlin Chen, Deborah Choquette, Angela Coxon, Tom DeMelfi= , Nicholas Doerr, Juan Estrada, Julie Flynn, Russell F. Graceffa, Shawn = P. Harriman, Stephen Kaufman, Daniel S. La, Alexander Long, Sesha Neerva= nnan, Vinod F. Patel, Michele Potashman, Kelly Regal, Phillip M. Roveto,= Michael L. Schrag, Charlie Starnes, Andrew Tasker, Yohannes Teffera, Do= uglas A. Whittington and Roger Zanon
pp 1668–1680
Publication Date (Web): March 7, 2008 = (Article)
DOI: 10.1021/j= m701098w
3D"Figure"
= <= /a>
Figure 1

Structure-Guided Design of Aminopyrimidine Amides as Potent,= Selective Inhibitors of Lymphocyte Specific Kinase: Synthesis, Structur= e–Activity Relationships, and Inhibition of in Vivo T Cell Activat= ion

Erin F. DiMauro, John Newcomb,= Joseph J. Nunes, Jean E. Bemis, Christina Boucher, Lilly Chai, Stuart C= . Chaffee, Holly L. Deak, Linda F. Epstein, Ted Faust, Paul Gallant, Anu= Gore, Yan Gu, Brad Henkle, Faye Hsieh, Xin Huang, Joseph L. Kim, Josie = H. Lee, Matthew W. Martin, David C. McGowan, Daniela Metz, Deanna Mohn, = Kurt A. Morgenstern, Antonio Oliveira-dos-Santos, Vinod F. Patel, David = Powers, Paul E. Rose, Stephen Schneider, Susan A. Tomlinson, Yan-Yan Tud= or, Susan M. Turci, Andrew A. Welcher, Huilin Zhao, Li Zhu and Xiaotian = Zhu
pp 1681–1694
Publication Date (Web): March 6, 2008 (Article)
DOI: 10.1021/jm7010996
=
<= img alt=3D"Figure" src=3D"/templates/jsp/images/singlePixel.gif"><= /div>
Figure 1
=
=
<= h2>Novel 2,3-Dihydro-1,4-Benzoxaz= ines as Potent and Orally Bioavailable Inhibitors of Tumor-Driven Angiog= enesis
Daniel S. La, Julie Belzile= , James V. Bready, Angela Coxon, Thomas DeMelfi, Nicholas Doerr, Juan Es= trada, Julie C. Flynn, Shaun R. Flynn, Russell F. Graceffa, Shawn P. Har= riman, Jay F. Larrow, Alexander M. Long, Matthew W. Martin, Michael J. M= orrison, Vinod F. Patel, Philip M. Roveto, Ling Wang, Matthew M. Weiss, = Douglas A. Whittington, Yohannes Teffera, Zhiyang Zhao, Anthony J. Polve= rino and Jean-Christophe Harmange
pp 1695–1705
Pu= blication Date (Web): February 27, 2008= (Article)
DOI: 10.1021/= jm701129j
3D"Figure"
Figure 1

Indoleamine 2,3-Dioxygenase Is the Anticancer Target for a= Novel Series of Potent Naphthoquinone-Based Inhibitors

Sanjeev Kumar, William P. Malachowski, James B. Du= Hadaway, Judith M. LaLonde, Patrick J. Carroll, Daniel Jaller, Richard M= etz, George C. Prendergast and Alexander J. Muller
pp 1706–1= 718
Publication Date (Web): March 5, 2008 (Article)
DOI: 10.1021/jm7014155
3D"Subscriber Subscriber Access
3D"Figure"
Figure 1<= /span>
<= script type=3D"text/javascript">addFigure('10.1021/jm701185v','/appl/lit= eratum/publisher/achs/journals/production/jmcmar/2008/jmcmar.2008.51.iss= ue-6/jm701185v','jm-2007-01185v_0001.gif','true');
=
3D"Figu=
Figu= re 1
=

Benzyl = Ether-Linked Glucuronide Derivative of 10-Hydroxycamptothecin Designed f= or Selective Camptothecin-Based Anticancer Therapy

Yu-Ling Leu, Chien-Shu Chen, Yih-Jang Wu and Ji-Wang Ch= ern
pp 1740–1746
Publication Date (Web): March 5, 2008 (Article)
DOI: 10.1021/jm701151c
=
<= img alt=3D"Figure" src=3D"/templates/jsp/images/singlePixel.gif"><= /div>
Figure 1
=
=
<= h2>Synthesis and Biological Activ= ity of Phosphonate Analogues and Geometric Isomers of the Highly Potent = Phosphoantigen (E)-1-Hydroxy-2-methylbut-2-enyl 4-Diphosphate=
Angélique Boëdec, Hél&= #232;ne Sicard, Jean Dessolin, Gaëtan Herbette, Sophie Ingoure, C&#= 233;dric Raymond, Christian Belmant and Jean-Louis Kraus
pp 1747&nd= ash;1754
Publication Date (Web): February 28, 2008<= span class=3D"manType"> (Article)
DOI: 10.1021/jm701101g
<= div class=3D"articleLinksIcons">
3D"Subscriber Subscriber A= ccess
=
3D"Figu=
Figu= re 1
=

Characterization of Typ= e II Ligands in CYP2C9 and CYP3A4

= Marie M. Ahlström and Ismael Zamora
pp 1755–1763
Publication Date (Web): March 1, 2008 (Article)
DOI: 10.1= 021/jm701121y
3D"Subscriber Subscriber Access
<= div class=3D"articleFigure">3D"Figure"
Figure 1
addFigure('10.1021/jm701159t','/appl/liter= atum/publisher/achs/journals/production/jmcmar/2008/jmcmar.2008.51.issue= -6/jm701159t','jm-2007-01159t_0006.gif');

Derivatives of= 4-Amino-6-hydroxy-2-mercaptopyrimidine as Novel, Potent, and Selective = A3 Adenosine Receptor Antagonists

Barbara Cosimelli, Giovanni Greco, Marina Ehlardo, Ettore Nov= ellino, Federico Da Settimo, Sabrina Taliani, Concettina La Motta, Marus= ca Bellandi, Tiziano Tuccinardi, Adriano Martinelli, Osele Ciampi, Maria= Letizia Trincavelli and Claudia Martini
pp 1764–1770
Publication Date (Web): February 13, 2008 (Article)
DOI: 1= 0.1021/jm701159t
<= div class=3D"icons">
3D"Subscriber Subscriber Access
3D"Figure"
Figure 1

Azetidine-2,4-dione= s (4-Oxo-β-lactams) as Scaffolds for Designing Elastase Inhibitors<= /a>

pp 1783&= ndash;1790
Publication Date (Web): February 22, 200= 8 (Article)
DOI: 10.1021/jm701257h
<= ul>
  • = 3D"HTML"Full Text HTML
  • 3D"PDF"Hi-Res PDF[724K]
  • 3D"PDF"PDF w/ Links[= 251K]
  • 3D"Subscriber Subscriber= Access
    3D"=
    =
    = Figure 1
    addFigure('10.1021/jm701264d','/appl/litera= tum/publisher/achs/journals/production/jmcmar/2008/jmcmar.2008.51.issue-= 6/jm701264d','jm-2007-01264d_0010.gif');
    <= div class=3D"articleBoxMeta">

    = Synthesis and Structure–Activity Relationships of the First Ferroc= enyl-Aryl-Hydantoin Derivatives of the Nonsteroidal Antiandrogen Nilutam= ide

    Olivier Payen, Siden Top, Anne= Vessières, Emilie Brulé, Marie-Aude Plamont, Michael J. McGli= nchey, Helge Müller-Bunz and Gérard Jaouen
    pp 1791&ndash= ;1799
    Publication Date (Web): February 28, 2008 (Article)
    DO= I: 10.1021/jm701264d
    3D"Subscriber Subscriber Ac= cess
    =
    3D"Figu=
    Figu= re 1
    =

    Ruthenium Porphyrin Compou= nds for Photodynamic Therapy of Cancer

    Frédéric Schmitt, Padavattan Govindaswamy, Georg Süs= s-Fink, Wee Han Ang, Paul J. Dyson, Lucienne Juillerat-Jeanneret and Bru= no Therrien
    pp 1811–1816
    Publication Date (Web): = February 26, 2008 (Article)
    DOI: 10.1021/jm701382p
    Subscriber Access
    3D"Figure"
    Figure 1

    Synthesis of a Potent and Selective 18F-Labeled &= #948;-Opioid Receptor Antagonist Derived from the Dmt-Tic Pharmacophore = for Positron Emission Tomography Imaging

    Eun Kyoung Ryu, Zhanhong Wu, Kai Chen, Lawrence H. Lazarus, Ewa, = D. Marczak, Yusuke Sasaki, Akihiro Ambo, Severo Salvadori, Chuancheng Re= n, Heng Zhao, Gianfranco Balboni and Xiaoyuan Chen
    pp 1817–18= 23
    Publication Date (Web): March 1, 2008 (Article)
    DOI: 10.1021/jm7014765
    addFigure('10.1021/jm701040v','/appl/literatu= m/publisher/achs/journals/production/jmcmar/2008/jmcmar.2008.51.issue-6/= jm701040v','jm-2007-01040v_0007.gif','true');addFigure('10.1021/jm701040v','/appl/liter= atum/publisher/achs/journals/production/jmcmar/2008/jmcmar.2008.51.issue= -6/jm701040v','jm-2007-01040v_0004.gif');

    Toward a Struc= ture-Based Model of Salvinorin A Recognition of the κ-Opioid Recept= or

    Brian E. Kane, Christopher R. M= cCurdy and David M. Ferguson
    pp 1824–1830
    Publica= tion Date (Web): February 23, 2008 (Art= icle)
    DOI: 10.1021/jm701= 040v
    = 3D"= Subscriber Access
    =
    3D"Figure"
    Figure 1
    =

    Novel Potent and Selective Bile Acid Derivatives as TGR5 Agonist= s: Biological Screening, Structure−Activity Relationships, and Mol= ecular Modeling Studies

    Hiroyuki S= ato, Antonio Macchiarulo, Charles Thomas, Antimo Gioiello, Mizuho Une, A= lan F. Hofmann, Régis Saladin, Kristina Schoonjans, Roberto Pellicc= iari and Johan Auwerx
    pp 1831–1841
    Publication Da= te (Web): February 29, 2008 (Article)
    DOI: 10.1021/jm7015864
    Subscriber Access
    3D"Figure"
    Figure 1
    addFigure('10.1021/jm7013953','/appl/literatum= /publisher/achs/journals/production/jmcmar/2008/jmcmar.2008.51.issue-6/j= m7013953','jm-2007-013953_0003.gif');

    Ass= essment of Drug−Lipid Complex Formation by a High-Throughput Langm= uir-Balance and Correlation to Phospholipidosis

    Pavol Vitovič, Juha-Matti Alakoskela and Paavo K. J.= Kinnunen
    pp 1842–1848
    Publication Date (Web): March 5, 2008 (Article)
    DOI: 10.1021/jm7013953

    Synthesis and In Vitro Opioid Recep= tor Functional Antagonism of Analogues of the Selective Kappa Opioid Rec= eptor Antagonist (3R)-7-Hydroxy-N-((1S)-1-{[(3R<= /i>,4R)-4-(3-hydroxyphenyl)-3,4-dimethyl-1-piperidinyl]methyl}-2-= methylpropyl)-1,2,3,4-tetrahydro-3-isoquinolinecarboxamide (JDTic)
    Tingwei Bill Cai, Zhou Zou, James B. Th= omas, Larry Brieaddy, Hernán A. Navarro and F. Ivy Carroll
    pp = 1849–1860
    Publication Date (Web): February 29= , 2008 (Article)
    = DOI: 10.1021/jm701344b
    =

    <= /div>
    Figure 1
    =
    =
    <= h2>Design, Synthesis, and SAR of = New Pyrrole-Oxindole Progesterone Receptor Modulators Leading to 5-(7-Fl= uoro-3,3-dimethyl-2-oxo-2,3-dihydro-1H-indol-5-yl)-1-methyl-1H= -pyrrole-2-carbonitrile (WAY-255348)
    Andrew Fensome, William R. Adams, Andrea L. Adams, Tom J. Berrodi= n, Jeff Cohen, Christine Huselton, Arthur Illenberger, Jeffrey C. Kern, = Valerie A. Hudak, Michael A. Marella, Edward G. Melenski, Casey C. McCom= as, Cheryl A. Mugford, Ov D. Slayden, Matthew Yudt, Zhiming Zhang, Puwen= Zhang, Yuan Zhu, Richard C. Winneker and Jay E. Wrobel
    pp 1861&nd= ash;1873
    Publication Date (Web): March 5, 2008 (Article)
    DOI= : 10.1021/jm701080t
    • <= a title=3D"Full Text HTML" href=3D"/doi/full/10.1021/jm701080t">=3D"HTML"Ful= l Text HTML
    • 3D"PDF"Hi-Res PDF[210K]
    • 3D"PDF"PDF w/ Links[245K]<= /li>
    3D"Subscriber Subscriber Acces= s
    3D"Figure=
    Figure= 1

    Underst= anding the Cardioprotective Effects of Flavonols: Discovery of Relaxant = Flavonols without Antioxidant Activity

    Cheng Xue Qin, Xingqiang Chen, Richard A. Hughes, Spencer J. Willia= ms and Owen L. Woodman
    pp 1874–1884
    Publication D= ate (Web): February 29, 2008 (Article)<= /span>
    DOI: 10.1021/jm070352h
    3D"Subscriber Subscriber Access
    3D"Figure"
    Figure 1
    addFigure('10.1021/jm070824s','/appl/literatu= m/publisher/achs/journals/production/jmcmar/2008/jmcmar.2008.51.issue-6/= jm070824s','jm-2007-00824s_0009.gif');

    Synthesis and Ant= i-HIV Activity of 4′-Substituted 4′-Thiothymidines: A New En= try Based on Nucleophilic Substitution of the 4′-Acetoxy Group=

    Kazuhiro Haraguchi, Hisashi Shimada, = Hiromichi Tanaka, Takayuki Hamasaki, Masanori Baba, Elizabeth A. Gullen,= Ginger E. Dutschman and Yung-Chi Cheng
    pp 1885–1893
    Publication Date (Web): February 27, 2008 (Article)
    DOI: 10= .1021/jm070824s
    3D"Figure"
    Figure 1

    Searching for New NO-Donor Aspirin-like Molecules: A = New Class of Nitrooxy-acyl Derivatives of Salicylic Acid

    Loretta Lazzarato, Monica Donnola, Barbara Roland= o, Elisabetta Marini, Clara Cena, Gabriella Coruzzi, Elena Guaita, Giuse= ppina Morini, Roberta Fruttero, Alberto Gasco, Stefano Biondi and Ennio = Ongini
    pp 1894–1903
    Publication Date (Web): February 23, 2008 (Article)
    DOI: 10.1021/jm701104f
    <= div class=3D"figureTray-wrap">
    3D"Figure"
    Figure 1

    Indol-3-yl-tetramethylcyclopropyl Ketones: Effects of Indo= le Ring Substitution on CB2 Cannabinoid Receptor Activity=

    Jennifer M. Frost, Michael J. Dart, K= arin R. Tietje, Tiffany R. Garrison, George K. Grayson, Anthony V. Daza,= Odile F. El-Kouhen, Loan N. Miller, Lanlan Li, Betty B. Yao, Gin C. Hsi= eh, Madhavi Pai, Chang Z. Zhu, Prasant Chandran and Michael D. Meyerpp 1904–1912
    Publication Date (Web): Februa= ry 27, 2008 (Article)
    DOI: 10.1021/jm7011613
    <= /div>
    <= img alt=3D"Figure" src=3D"/templates/jsp/images/singlePixel.gif"><= /div>
    Figure 1
    =

    Synthesis and Biological Evaluation of α- and β-= 6-Amido Derivatives of 17-Cyclopropylmethyl-3, 14β-dihydroxy-4, 5&#= 945;-epoxymorphinan: Potential Alcohol-Cessation Agents

    Senait Ghirmai, Marc R. Azar, Wilma E. Polgar, Ilo= na Berzetei-Gurske and John R. Cashman
    pp 1913–1924
    Publication Date (Web): February 26, 2008 (Article)
    DOI: 10.= 1021/jm701060e
    3D"Figure"
    Figure 1
    <= div class=3D"articleBoxMeta">

    = Discovery of a Novel Series of Biphenyl Benzoic Acid Derivatives as Pote= nt and Selective Human β3-Adrenergic Receptor Agonists w= ith Good Oral Bioavailability. Part I

    Masashi Imanishi, Yasuyo Tomishima, Shinji Itou, Hitoshi Hamashima, = Yutaka Nakajima, Kenichi Washizuka, Minoru Sakurai, Shigeo Matsui, Emiko= Imamura, Koji Ueshima, Takao Yamamoto, Nobuhiro Yamamoto, Hirofumi Ishi= kawa, Keiko Nakano, Naoko Unami, Kaori Hamada, Yasuhiro Matsumura, Fujik= o Takamura and Kouji Hattori
    pp 1925–1944
    Publica= tion Date (Web): February 29, 2008 (Art= icle)
    DOI: 10.1021/jm701= 324c
    3D"Figure"
    =
    Figure 1

    Inhibition of Carbonic Anhydrases with Glycosyltriazole Benzene= Sulfonamides

    Brendan L. Wilkinson= , Alessio Innocenti, Daniela Vullo, Claudiu T. Supuran and Sally-Ann Pou= lsen
    pp 1945–1953
    Publication Date (Web): February 29, 2008 (Article)
    DOI: 10.1021/jm701426t
    addFigure('10.1021/jm701179m','/appl/literatu= m/publisher/achs/journals/production/jmcmar/2008/jmcmar.2008.51.issue-6/= jm701179m','jm-2007-01179m_0004.gif');

    Efficient Inhibition of Iron Superoxide Dismutase and of Trypanosoma c= ruzi Growth by Benzo[g]phthalazine Derivatives Functionalized wit= h One or Two Imidazole Rings

    Ana M= . Sanz, Fernando Gómez-Contreras, Pilar Navarro, Manuel Sánche= z-Moreno, Samira Boutaleb-Charki, Jose Campuzano, Mercedes Pardo, Antoni= o Osuna, Carmen Cano, María J. R. Yunta and Lucrecia Campayo
    p= p 1962–1966
    Publication Date (Web): February = 23, 2008 (Brief Article)
    DOI: 10.1021/jm701179m
    =
    <= img alt=3D"Figure" src=3D"/templates/jsp/images/singlePixel.gif"><= /div>
    Figure 1
    =

    Covalent Grafting of Commo= n Trihydroxymethylaminomethane in the Headgroup Region Imparts High Seru= m Compatibility and Mouse Lung Transfection Property to Cationic Amphiph= ile

    Koushik Mukherjee, Jayanta Bha= ttacharyya, Joyeeta Sen, Ramakrishna Sistla and Arabinda Chaudhuri
    = pp 1967–1971
    Publication Date (Web): March 5,= 2008 (Brief Article)
    DOI: 10.1021/jm070879u
    <= /div>
    <= img alt=3D"Figure" src=3D"/templates/jsp/images/singlePixel.gif"><= /div>
    Figure 1
    =

    Docking Study Yields Four = Novel Inhibitors of the Protooncogene Pim-1 Kinase

    Albert C. Pierce, Marc Jacobs and Cameron Stuver-Moody<= /div>pp 1972–1975
    Publication Date (Web): Feb= ruary 22, 2008 (Brief Article)
    DOI: 10.1021/jm701248t

    Discovery of Brivanib Alaninate ((S)-((R= )-1-(4-(4-Fluoro-2-methyl-1H-indol-5-yloxy)-5-methylpyrrolo[2,1-<= i>f][1,2,4]triazin-6-yloxy)propan-2-yl)2-aminopropanoate), A Novel P= rodrug of Dual Vascular Endothelial Growth Factor Receptor-2 and Fibrobl= ast Growth Factor Receptor-1 Kinase Inhibitor (BMS-540215)

    Zhen-wei Cai, Yongzheng Zhang, Robert M. Borzil= leri, Ligang Qian, Stephanie Barbosa, Donna Wei, Xiaoping Zheng, Lawrenc= e Wu, Junying Fan, Zhongping Shi, Barri S. Wautlet, Steve Mortillo, Robe= rt Jeyaseelan, , Daniel W. Kukral, Amrita Kamath, Punit Marathe, Celia D= ’Arienzo, George Derbin, Joel C. Barrish, Jeffrey A. Robl, John T.= Hunt, Louis J. Lombardo, Joseph Fargnoli and Rajeev S. Bhide
    pp 19= 76–1980
    Publication Date (Web): February 21, = 2008 (Brief Article)
    DOI: 10.1021/jm7013309
    <= img alt=3D"Figure" src=3D"/templates/jsp/images/singlePixel.gif"><= /div>
    Figure 1
    =
    =
    For Selected Articles:
    =
    =
    = =
    = = =
    =
    Advertisements
    3D"Advertisement"/
    3D"SciFinder

    Browse By Issue

    = =
    =

    Search By Citation

    = = = = = = =
     
    Digital Obj= ect Identifier (DOI)
    =
    To jump to an article, select a journal and fill = in volume and article's first page or specify the DOI of the article= in the DOI box, and then click "Go".

    Stay Current

    Get your research ASAP.

    =
    Advertisements
    =
    = = =
    Copyright © 2008 American Chemical Society
    1155 Sixteenth Street N.W., Washington, DC 20036
    3D"Portico"/ 3D"COUNTER"/ 3D"CrossRef"/ ACS Publications is a partner of:
    Technology Partner - Atypon Systems, Inc.
    ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=style.css Content-Type: text/css; charset=UTF-8; name=style.css Content-Location: http://pubs.acs.org/templates/jsp/style.css Content-Transfer-Encoding: 8bit /* for XSL debugging */ .xslDebugTemplate { color: #999999; font-size: 10px; font-family: sans-serif; padding-left: 2px; } .xslDebugNodePath { color: #ff0000; font-size: 10px; font-family: sans-serif; padding-left: 2px; } .xslDebugImport { color: #007f00; font-size: 10px; font-family: sans-serif; padding-left: 2px; } /* this is hack for , try to be W3C valid and still compatible with older browsers in modern browser ​ is ZERO WIDTH SPACE = invisible by it self in older browsers we need occupy as little space as possible, cannot use display: none because most browsers will ignore the ​ and won't wrap */ .wbr { font-family: "Lucida Sans Unicode", "Arial Unicode MS", sans-serif; font-size: 2pt; color: #fff; white-space: normal; letter-spacing: 0; word-spacing: 0; word-wrap: break-word; /* IE only */ } .noWrap { white-space: nowrap; } /* For multi-level ToC headings */ .tocHeading .subj-group { display: block; font-size: 90%; } /* boxed-text was originally rendered as blockquote */ div.boxed-text-, div.boxed-text-anchor, div.boxed-text-float { margin-left: 3em; } div.boxed-text-margin { /* no rule */ } .refnumber { text-align: left; vertical-align: top; } .references .note p { padding: 0em; margin: 0em; } /* TOC */ .articleEntry { margin-bottom: 1em; } /* OASIS table model, order of rules is important for correct overriding */ /* by default table cells will have borders, to disable border colsep/rowsep should be set to "0" */ .NLM_table-wrap td, .NLM_table-wrap th { border-right: 1px solid black; border-bottom: 1px solid black; } .NLM_table-wrap-foot p { margin: 0; } .NLM_table-wrap table { border: 1px solid black; border-spacing: 0px; border-collapse: collapse; width: 95%; } .NLM_table-wrap table.frame_none { border: none; } .NLM_table-wrap table.frame_left { border: none; border-left: 1px solid black; } .NLM_table-wrap table.frame_right { border: none; border-right: 1px solid black; } .NLM_table-wrap table.frame_top { border: none; border-top: 1px solid black; } .NLM_table-wrap table.frame_bottom { border: none; border-bottom: 1px solid black; } .NLM_table-wrap table.frame_sides { border: none; border-left: 1px solid black; border-right: 1px solid black; } .NLM_table-wrap table.frame_topbot { border: none; border-top: 1px solid black; border-bottom: 1px solid black; } table.rowsep0 td, table.rowsep0 th { border-bottom: none; } table.rowsep1 td, table.rowsep1 th { border-bottom: 1px solid black; } table.rowsep2 td, table.rowsep2 th { border-bottom: 3px double black; } col.rowsep0, tr.rowsep0 td, tr.rowsep0 th { border-bottom: none; } col.rowsep1, tr.rowsep1 td, tr.rowsep1 th { border-bottom: 1px solid black; } col.rowsep2, tr.rowsep2 td, tr.rowsep2 th { border-bottom: 3px double black; } tr th.rowsep0, tr td.rowsep0 { border-bottom: none; } tr th.rowsep1, tr td.rowsep1 { border-bottom: 1px solid black; } tr th.rowsep2, tr td.rowsep2 { border-bottom: 3px double black; } table.colsep0 td, table.colsep0 th { border-right: none; } table.colsep1 td, table.colsep1 th { border-right: 1px solid black; } table.colsep2 td, table.colsep2 th { border-right: 3px double black; } col.colsep0, tr.colsep0 td, tr.colsep0 th { border-right: none; } col.colsep1, tr.colsep1 td, tr.colsep1 th { border-right: 1px solid black; } col.colsep2, tr.colsep2 td, tr.colsep2 th { border-right: 3px double black; } tr th.colsep0, tr td.colsep0 { border-right: none; } tr th.colsep1, tr td.colsep1 { border-right: 1px solid black; } tr th.colsep2, tr td.colsep2 { border-right: 3px double black; } /* last element takes border from the table, have none on its own */ .NLM_table-wrap table tr.last td { border-bottom: none; } .NLM_table-wrap table tr td.last, .NLM_table-wrap table tr th.last { border-right: none; } .NLM_table-wrap .align_right { text-align: right; } .NLM_table-wrap .align_left { text-align: left; } .NLM_def-list { margin: 1em 0; } .NLM_def-list .NLM_title, .NLM_def-list .NLM_term-head, .NLM_def-list .NLM_def-head, .NLM_def-list .NLM_term { font-weight: bold; vertical-align: top; } .NLM_def-list .NLM_def { vertical-align: top; } /* "list tables" in context of real tables */ .NLM_table-wrap table tr td table.listgroup, .NLM_table-wrap table tr td table.listgroup td { border: none; width: auto; text-align: left; } /* NLM title and inlinehead (heading[@format='inline']), for historic reason without NLM_ prefix */ .title1, .title2, .title3, .title4, .title5, .inlinehead1, .inlinehead2, .inlinehead3, .inlinehead4, .inlinehead5 { font-weight: bold; } .searchNone0, .searchNone1, .searchNone2, .searchNone3, .searchNone4, .searchNone5, .searchNone6, .searchNone7, .searchNone8, .searchNone9 { color: inherit; background-color: inherit; font-weight: inherit; } .searchTerm0 { color: black; background-color: #ffff66; font-weight: bold; } .searchTerm1 { color: black; background-color: #a0ffff; font-weight: bold; } .searchTerm2 { color: black; background-color: #99ff99; font-weight: bold; } .searchTerm3 { color: black; background-color: #ff9999; font-weight: bold; } .searchTerm4 { color: black; background-color: #ff66ff; font-weight: bold; } .searchTerm5 { color: white; background-color: #880000; font-weight: bold; } .searchTerm6 { color: white; background-color: #00aa00; font-weight: bold; } .searchTerm7 { color: white; background-color: #886800; font-weight: bold; } .searchTerm8 { color: white; background-color: #004699; font-weight: bold; } .searchTerm9 { color: white; background-color: #990099; font-weight: bold; } .citation_source-book, .citation_source-journal { font-style: italic; } .dash { font-size: 13px; } .quote { margin: 1em 0em 1em 5em; display: block; } /* content is indexable */ .index { } /* entity images: A: static entity image from fs B: dynamic baseline C: dynamic bottom D: static text-bottom */ .entityA { } .entityB { border: 0px; vertical-align: baseline; } .entityC { border: 0px; vertical-align: bottom; } .entityD { border: 0px; vertical-align: text-bottom; } .toc_subarticle_style { font-size: 11px; font-family: Arial, Helvetica, sans-serif; } .toc_subarticle_authors_style { font-size: 10px; font-family: Arial, Helvetica, sans-serif; } .toc_subarticle_title_style { font-size: 11px; font-family: Arial, Helvetica, sans-serif; font-weight: bold; } .fromGoogle { border-style: solid; border-color: red; border-width: 2px 0pt; margin: 12px 0pt; padding: 2px 0pt; line-height: 20px; font-size: 12px; } .lilabel { } .smallcaps { font-variant: small-caps; } .strike { text-decoration: line-through; } .NLM_disp-formula { display: block; } a.roDisabled { color: GrayText; } .articleEntry .firstCell { text-align: right; vertical-align: top; width: 18px; padding-top: 0; } div.appendix span.title5 { display: block; } .sectionHeading{ background-color:#e1e1e1; } .sectionHeading th{ font-size: larger; } .artAuthors .NLM_bio { font-weight: normal; } .multiIssueToc .issueTitle { font-weight: bold; } .monospace { font-family: monospace; } table.formula { margin: 1em 0; clear: both; } .NLM_list-list_type-simple { list-style: none; display: block; } .IN_LIST-freeText, .IN_LIST-label, .IN_LIST-title { list-style: none; display: inline; margin: 0; padding: 0 } ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=style.css Content-Type: text/css; charset=UTF-8; name=style.css Content-Location: http://pubs.acs.org/templates/jsp/_style2/style.css Content-Transfer-Encoding: 8bit body, .bodyLayout { margin: 0px; padding: 0px; border: 0px; border-spacing: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 11pt; } td { font-family: Arial, Helvetica, sans-serif; font-size: 11pt; } .leftRegion, .centerRegion, .rightRegion { margin: 0px; padding: 0px; border: 0px; } .logo { padding: 14px 0px; text-align: center; } .logo_bottom { padding-top: 20px; padding-bottom: 20px; text-align: center; } .welcome_user_text { font-size: x-small; font-weight: bold; padding: 1em; border-bottom: 1px solid #444; color: #444; } .pub_search_box { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small; font-weight: bold; padding: 1em; margin-bottom: 1em; border-bottom: 1px solid #444; color: #444; } .pub_search_link { font-size: 10pt; font-weight: bold; margin-bottom: 5px; margin-top: 5px; } .menuXsubMenuDivider { text-align: center; } #hide { display:none } .art_title, .arttitle, .searchResultTitle { font-weight: bold; } .art_author { color: gray; } .art_meta { color: gray; } .error { color: red; } .citedByEntry { margin-bottom: 0.5em; } .citedBySection { margin-bottom: 2em; } .bullet { vertical-align: top; } .tocHeading .subj-group { display: block; font-size: 90%; } tr.resultItemNav { } a img { border-width: 0 } td.savedSearch { } .currencySymbol { font-weight: bold; } #showMailPage label { font-weight: bold; } #showMailPage label.checkBox { font-weight: normal; } div.p { margin: 1em 0; } #CreditCardDialog .required { color: #f00; } #CreditCardDialog label { margin: 1em 0; text-align: left; } .formHeading { font-weight: bold; } div.federation { margin-top:15px; font-size:1.1em; font-weight:bold; } .logoImg{ width:165px; height:108px; border:0; } table.offersOption { width:100%; padding:0 2em; } .offersOption td{ padding-bottom:1em; } .offersOption li{ list-style:none; } .offersOption tr.buttons{ text-align:right; } .deliveryFormat li{ list-style:none; display:inline; } .ecommOffers { font-weight: bold; } .addressLink { cursor: pointer; color: blue; } .federation select { width: 200px; } .federation label { margin-top: 10px; } ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=atypon-main.css Content-Type: text/css; charset=UTF-8; name=atypon-main.css Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/css/atypon-main.css Content-Transfer-Encoding: 8bit /* === Redefined Tags === */ body { width: 100%; height: 100%; margin: 0; padding: 0; font: 100% "Trebuchet MS", Arial, Helvetica, sans-serif; line-height: 1.125em; color: #000; text-align: center; background: #fff url(/templates/jsp/_style2/_achs/images/body-bg.gif) repeat-x; } a { color: #369; } a:visited { color: #369; } a:hover { text-decoration: none; } img { border: 0; } p { margin: 0 0 1em; padding: 0; } form { margin: 0; padding: 0; } h1 { margin: 0 0 .5em 0; padding: 0; font: bold 1.3em "Trebuchet MS", Arial, Helvetica, sans-serif; color: #2d5073; } h2 { margin: 0; padding: 0 0 5px; font: bold 1em Arial, Helvetica, sans-serif; color: #304e96; } h3 { margin: 0; padding: 0; font: bold .875em "Trebuchet MS", Arial, Helvetica, sans-serif; color: #304e96; } h4 { margin: 0; padding: 0 0 3px; font: bold .95em "Trebuchet MS", Arial, Helvetica, sans-serif; } h5 { margin: 0; padding: 0 0 3px; font: bold .875em "Trebuchet MS", Arial, Helvetica, sans-serif; } h6 { margin: 0; padding: 0 0 3px; font: bold .875em "Trebuchet MS", Arial, Helvetica, sans-serif; color: #444; } h1, h2, h3, h4, h5, h6 { line-height: 1.4em; } sup, sub { vertical-align: 0.4em; font-size: .8em; } sub { vertical-align: -0.4em; } hr { clear: both; display: block; height: 1px; margin: 2px 0 10px; background: #bbc5df; border: 0; } table { background: #fff; } blockquote { font: .8em Arial, Helvetica, sans-serif; } /* === MAIN STRUCTURE === */ #container { position: relative; display: block; width: 1000px; height: 100%; margin: 0 auto; padding: 0; text-align: left; } #header { position: relative; display: block; width: 1000px; z-index: 400; /* for Explorer */ } #banner-bg { background: #1e73b3; width: 100%; height: 20px; overflow: hidden; } #global-banner { margin: 0 auto; padding: 0; height: 20px; text-align: center; width: 1000px; } #global-banner ul { float: right; margin: 0; padding: 0; list-style: none; text-align: center; } #global-banner ul li { display: block; float: left; margin: 0; padding: 0; text-align: center; border-left: 1px solid #ccc; } #global-banner li.endRt { border-right: 1px solid #ccc; } #global-banner ul li a { display: block; width: 5em; height: 20px; margin: 0 0 10px 0; padding: 1px 0 0 0; font: .8em Verdana, Arial, Helvetica, sans-serif; color: #fff; text-decoration: none; text-align: center; } #global-banner ul li a:hover, #global-banner ul li#active-gb a:hover { background: #dfdfff; color: #000; } #global-banner li#active-gb a { background: #0f4d82; color: #fff; } #pubsTop { position: relative; width: 1000px; height: 65px; margin: 0; } #pubsLogo { float: left; width: 244px; padding: 12px 0 0; } #pubsTopNav { position: absolute; top: 7px; right: 7px; float: right; padding: 0; text-align: right; color: #fff; } #pubsTopNav a:link, #pubsTopNav a:visited, #pubsTopNav a:hover { font: .75em "Trebuchet MS", Arial, sans-serif; margin: 0 7px; text-decoration: none; } #pubsTopNav a:link, #pubsTopNav a:visited { color: #fff; } #pubsTopNav a:hover { text-decoration: underline; } #pubsTopNav #journalList { display: block; float: left; margin: 1px .3em 0 0; padding: 2px 6px; background: #27689f; color: #fff; border: 1px solid #3c74a4; } #pubsTopNav #journalList:hover { color: #fff; background: #369; text-decoration: none; } #journalTop { display: block; width: 1000px; min-height: 80px; background: transparent; } #journalLogo { margin: 15px 0 7px; } #impactImage { display: block; width: 1000px; height: 125px; padding: 15px 0 7px; background: transparent; } #nav-wrap-pubs, #nav-wrap-journal, #nav-wrap-arrc, #nav-wrap-lrc { clear: both; position: relative; width: 1000px; height: 30px; margin: 0; padding: 0; background: transparent url(/templates/jsp/_style2/_achs/images/navbar-bg.gif) no-repeat; z-index: 4000; } #profile-wrap { position: absolute; top: -28px; right: 0; height: 21px; background: transparent url(/templates/jsp/_style2/_achs/images/profile.png) no-repeat left top; } #profile { height: 100%; margin: 0 0 0 3px; z-index: 1000; } #profile div { height: 100%; padding: 1px 7px 0 4px; font-size: .7em; color: #fff; white-space: nowrap; } #profile div span { margin-right: 5px; } #profile div a { margin: 0 2px; color: #fff; } #profile div a img { position: relative; top: 1px; } body.journal #profile-wrap, body.arrc #profile-wrap, body.lrc #profile-wrap { top: -25px; right: 0; height: 24px; background: transparent; } body.journal #profile, body.arrc #profile, body.lrc #profile { background: transparent; } body.journal #profile div, body.arrc #profile div, body.lrc #profile div { color: #333; } body.journal #profile div a, body.arrc #profile div a, body.lrc #profile div a { color: #369; } #search-wrap { position: absolute; top: 40px; right: 15px; display: block; padding: 0; background: url(/templates/jsp/_style2/_achs/images/searchbox-tl.png) no-repeat left top; } #search { display: block; padding: 6px 0 0; background: url(/templates/jsp/_style2/_achs/images/searchbox-tr.png) no-repeat right top; } #searchJournal { display: block; margin: 0; padding: 0 0 0 7px; background: #fbf9b9; } #searchJournal * { margin: 0; padding: 0; font-size: .75em; font-family: Arial, Helvetica, sans-serif; } #searchJournal label, #searchJournal label cite { font-size: 1em; color: #09477a; } #searchJournal h4 { margin: 0 0 5px; padding: 0; font: bold .9em Arial, Helvetica, sans-serif; color: #09477a; } #advancedLink { position: absolute; top: 0; right: 2px; margin: 0; font: 1em Arial, Helvetica, sans-serif; text-align: right; } #advancedLink a { display: block; margin: 7px 9px 0 0; } #search #searchSub { margin: 0 7px; } #search #searchCollection { margin: 7px 0 0 2px; padding: 0 7px 2px 0; } #searchCollection * { line-height: normal; vertical-align: middle; } #searchJournal #thisjrnl { font-size: 1em; } #searchJournal #alljrnl { margin: 0 0 0 15px; font-size: 1em; } #searchFooter { position: absolute; bottom: -6px; left: 6px; right: 6px; display: block; height: 6px; margin: 0; background: #fbf9b9; } #searchBL { position: absolute; bottom: -6px; left: 0; width: 6px; height: 6px; background: transparent url(/templates/jsp/_style2/_achs/images/searchbox-bl.png) no-repeat bottom left; } #searchBR { position: absolute; bottom: -6px; right: 0; width: 6px; height: 6px; background: url(/templates/jsp/_style2/_achs/images/searchbox-br.png) no-repeat bottom right; } #cobranding { position: absolute; top: 0; left: 0; height: 18px; margin: 2px 0 0; vertical-align: middle; font: 11px Verdana, Arial, Helvetica, sans-serif; color: #fff; z-index: 6000; } #alertSitewide, #alertJournals, #alertGroupAccess, #alertDiscontinued { clear: both; float: left; width: 998px; margin: 7px 0 0; border: 1px solid #ccc; background: #ffc; } #alertDiscontinued { border: 1px solid #900; color: #600; } #alertSitewide span, #alertJournals span, #alertGroupAccess span, #alertDiscontinued span { display: block; margin: 2px 7px; font-size: .9em; } #mainBody { clear: both; float: left; width: 1000px; margin: 10px 0 20px; padding: 0 0 7px; background: #eef6fc url(/templates/jsp/_style2/_achs/images/topright.gif) right top no-repeat; } #content-wrap { float: left; width: 805px; margin: 0 0 7px; padding: 7px 0 0; background: transparent url(/templates/jsp/_style2/_achs/images/topleft.gif) left top no-repeat; display: inline; /* EXPLORER SUCKS BIGTIME */ } #content { float: left; width: 798px; margin: 0 0 0 5px; padding: 0; display: inline; /* EXPLORER SUCKS BIGTIME */ } #contentFooter { clear: left; float: left; width: 798px; margin: 0 0 0 5px; padding: 0; background: #ffc; } #rightColumn { clear: none; float: right; width: 182px; margin: 7px 5px 0 0; display: inline; /* EXPLORER SUCKS BIGTIME */ } .rtColBox { clear: both; display: block; margin: 0 0 7px; padding: 10px; background: #fff; border: 1px solid #b6b6e1; font-size: .75em; line-height: normal; } .rtColBox h2, .rtColBox h3 { margin: 0 0 7px; font-size: 1.1em; line-height: normal; background: transparent !important; } .rtColBox h4 { margin: 10px 0 0; padding: 0; font-size: 1em; } #rightColumn a { text-decoration: none; } #rightColumn a:hover { text-decoration: underline; } #rightColumn ul, #sideCol .sideColBox ul { margin: 0; padding: 0; } #rightColumn ul li, #sideCol .sideColBox ul li { margin: 0 0 3px 17px; padding: 0; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); font-size: 1em; } #rightColumn .blueBG ul li, #rightColumn .darkBlueBG ul li { margin: 0 0 2px 17px; padding: 0; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-white-trans.gif); } #rightColumn .blueBG a, #rightColumn .blueBG a:visited, #rightColumn .darkBlueBG a:visited { color: #fff; } .rtColBox a img { text-decoration: none; } .findIssue { background: #2b578a; } .findCitation { background: #6982ba; } .findIssue h3, .findCitation h3 { color: #fff; } #issueJump, #citationJump { display: block; margin: 0; padding: 0; } #issueJump .footer, #citationJump .footer { position: relative; height: 18px; margin: 12px 0 0; } #issueJump .footer a { position: relative; top: 4px; color: #fff; text-decoration: underline; } #issueJump .footer a:hover { text-decoration: none; } #issueJump div { display: block; height: 1.8em; margin: 0 0 7px; } #issueJump select { display: block; width: 150px; } #rightColumn .rtColBox .formSubmit, body.search #citationJump .footer .formSubmit { position: absolute; top: 0; right: 0; display: block; width: 25px; height: 17px; margin: 0; background: url(/templates/jsp/_style2/_achs/images/go.png); cursor: pointer; } #citationJump div { margin: 0 0 7px; } #citationJump #or { width: 162px; height: 14px; margin: 7px 0; background: url(/templates/jsp/_style2/_achs/images/citFndOr.png) no-repeat; } #citationJump .info { float: left; width: 50px; height: 18px; background: url(/templates/jsp/_style2/_achs/images/info.png); cursor: pointer; } #issueJump *, #citationJump * { font-size: 12px; } #citationJump option { width: 25em; } .blueBG { background-color: #1e73b3; } .darkBlueBG { background-color: #00497e; } .blueBG *, .darkBlueBG * { color: #fff; } .blueBG #submit, .darkBlueBG #submit { color: #000 !important; } .sciFinderLogin { padding: 0; } .adSpace { color: #999; text-align: center; padding-bottom: 5px; } .adSpace div { margin: 0 0 3px; } .adSpace img { margin: 0 0 3px; border: 1px solid #ccc; } .adSpace .adInfo { margin: 10px 0 0 !important; } #pageFooter-wrap { clear: both; float: left; width: 100%; margin: 0; padding: 10px 0; font: .7em "Trebuchet MS", Arial, Helvetica, sans-serif; color: #fff; background: #0f4d82; text-align: left; } #pageFooter { width: 1000px; margin: 0 auto; } #btmCopyright { float: left; } #pageFooterLinks { float: right; margin: 0; } #pageFooter a, pageFooter a:visited { color: #fff; text-decoration: none; } #pageFooter a:hover { text-decoration: underline; } #pageFooterLinks a:link, #pageFooterLinks a:visited, #pageFooterLinks a:hover { font: 1em "Trebuchet MS", Arial, sans-serif; margin: 0 .7em 0 .3em; } .pageFooterPartners { clear: right; float: right; width: 60%; margin-top: 10px; text-align: right; } .pageFooterPartners span, .pageFooterPartners img { float: right; margin: 0 0 0 10px; } /* === Pubs Home Page === */ #hpTopBox { float: left; width: 796px; margin: 0 0 10px; padding: 0 0 5px; background: #fff; border: 1px solid #b6b6e1; } #hpTopBox * { line-height: 1.4em; } body.pubs #hpTopBox h1 { width: 515px; margin: 10px; padding: 0; font: bold 1em "Trebuchet MS", Arial, sans-serif; color: #2d5073; } body.pubs #hpTopBox p { width: 515px; margin: 0 7px 7px 10px; font-size: .8em; } #aboutSubBox { float: right; width: 250px; margin: 7px; background: #d8e3ed; display: inline; /* EXPLORER SUCKS BIGTIME */ } #hpTopBox #aboutSubBox p { width: auto; margin: 10px; } #hpTopBox #aboutSubBox div { margin: 10px; font-size: .8em; } #hpLeft { float: left; width: 432px; background: #fff url(/templates/jsp/_style2/_achs/images/journals-bg.jpg) no-repeat; border: 1px solid #b6b6e1; } #hpLeft h2 { margin: 3px 3px 10px 3px; padding: 4px 7px; background: #d8e4ee url(/templates/jsp/_style2/_achs/images/h2-bg.gif) repeat-x; line-height: normal; } #hpLeft h3 { margin: 10px 0 0 10px; font-size: 1em; line-height: normal; } #journalListView { margin: 0 10px; font-size: .8em; } #journalListView div { float: left; width: auto; margin: 0 7px 15px 0; padding: 0; } #journalListView a { display: block; padding: 4px 7px; font: 1em Verdana, Arial, Helvetica, sans-serif; text-decoration: none; } #journalListView #azLink { font-weight: bold; background: #eee; color: #000; border: 1px solid #ccc; } #azView, #catView { clear: left; display: block; } #catView { display: none; } #azView ul, #catView ul { display: block; margin: 0 10px 15px 10px; padding: 0 !important; } #azView ul li, #catView ul li { display: block; margin: 0 0 2px; padding: 0 !important; list-style: none; font-size: .8em; } #azView ul li div, #catView ul li div { font-size: .9em; margin: 0 0 0 15px; } #azView a { text-decoration: none; } #azView a:hover { text-decoration: underline; } #catView ul li { font-weight: bold; margin: 0 0 5px; } #catView ul li ul { margin: 5px 10px 10px 30px; padding: 0; } #catView ul li ul li { display: list-item; font-weight: normal; font-size: 1em; margin: 0 0 2px; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } #catView ul li a { color: #333; text-decoration: none; } #catView ul li a:hover { color: #900; text-decoration: none; } #catView ul li ul li a { color: #369; } #catView ul li ul li a:hover { color: #369; text-decoration: underline; } #azView .history, #catView .history { display: inline; position: relative; top: 3px; left: 3px; margin: 0; padding: 0; } #azView .history img, #catView .history img { margin: 0; padding: 0; border: 0; } #azView .history ul, #catView .history ul { margin: 4px 0 10px 30px; padding: 0; display: none; } #azView .history ul li, #catView .history ul li { display: list-item; margin: 0; padding: 0; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); font-size: 1em; } #azView .column, #catView .column { margin: 0 10px 0 0; } #hpRight { float: right; width: 358px; overflow: hidden; } #hpRight .hpBox { margin: 0 0 7px; padding: 0 0 10px 0; border: 1px solid #b6b6e1; background: #fff; } #hpRight .hpBox h2 { display: block; margin: 3px 3px 10px 3px; padding: 4px 7px; background: #d8e4ee url(/templates/jsp/_style2/_achs/images/h2-bg.gif) repeat-x; line-height: normal; } .feedburnerFeedBlock ul { clear: left; padding: 0; } .feedburnerFeedBlock ul li { margin: 10px 7px 0 0 !important; padding: 0 !important; background: transparent !important; border: 0 !important; list-style: none !important; } .feedburnerFeedBlock .headline { font-weight: bold; } p.date { margin: 0; color: #555; font-size: .9em !important; } .feedburnerFeedBlock div { margin: 0 0 1em; font-size: .9em !important; } .feedflare, #creditfooter { display: none; } #hpRight .hpBox p, #hpRight .hpBox div { font-size: .8em; } #hpRight .hpBox div div, #hpRight .hpBox div p { font-size: 1em; line-height: normal; } #textArea #sideCol p.feedTitle, #sideCol .sideColBox p.feedTitle { font-size: 1.13em; font-weight: bold; } #textArea #sideCol p.feedTitle a:link, #textArea #sideCol p.feedTitle a:visited, #sideCol .sideColBox p.feedTitle a:link, #sideCol .sideColBox p.feedTitle a:visited { color: #900; text-decoration: none; } #textArea #sideCol p.feedTitle a:hover, #sideCol .sideColBox p.feedTitle a:hover { color: #900; text-decoration: underline; } .item { clear: left; margin: 0 7px 10px; } .item .flLeft { margin-right: 10px; margin-bottom: 10px; } .item h2 { display: block; margin: 3px 3px 10px 3px; padding: 4px 7px; background: #d8e4ee url(/templates/jsp/_style2/_achs/images/h2-bg.gif) repeat-x; line-height: normal; } .item ul { margin: 5px 0 1.4em; padding: 0; } .item ul li { margin: 0 0 4px 15px; padding: 0; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); line-height: normal; } .item h3 { font: bold 1em "Trebuchet MS", Arial, Helvetica, sans-serif; } .item h3 a { text-decoration: none; } .item h3 a:hover { text-decoration: underline; } .item p { font-size: .8em; } #hpRight h4 { font: bold .9em Verdana, Arial, Helvetica, sans-serif; margin: 0 0 10px; padding: 0; } #hpRight #featuresList h4 { margin: 0 0 15px; } #hpRight h5 { margin: 0; padding: 0; font: normal .9em "Trebuchet MS", Arial, Helvetica, sans-serif; color: #555; } #hpRight #newsList .link { margin-top: -1em; font-size: .875em; line-height: normal; } #hpRight .nav { display: block; text-align: right; margin: 15px 10px 0 0; } #hpRight .nav a { font-size: .875em; } #newsList, #cenList, #featuresList { margin: 0 0 0 10px; } #newsList img, #featuresList img { float: left; margin: 0 10px 0 0; } #newsList .item, #featuresList .item { clear: left; margin: 0 0 1em; min-height: 88px; } #cenList img { float: right; margin: 5px 10px 10px; } #cenNewsBox div { margin: 0 10px 10px; } .books .item { margin: 0 0 7px 10px; min-height: 88px; } .books img { float: left; margin: 0 10px 15px 0; } /* === Journal Home Page and 2ndary Pages === */ #highlightBox { position: relative; float: left; width: 410px; height: 255px; margin: 5px 0 0 5px; border: 1px solid #666; overflow: hidden; } #highlightBox h2 { display: block; width: 396px; height: 20px; line-height: 20px; margin: 0; padding: 2px 7px 0 7px; background: #333; color: #fff !important; font: 14px Verdana, Arial, Helvetica, sans-serif; vertical-align: middle; } #highlightNav { position: absolute; bottom: -1px; left: 0; width: 410px; height: 28px; border-top: 1px solid #666; background: #333; color: #fff; } #highlightNav .prev, #highlightNav .next { position: absolute; top: 5px; left: 311px; display: block; width: 25px; height: 18px; background: url(/templates/jsp/_style2/_achs/images/prevSlide.gif) 0 0; text-align: right; } #highlightNav .next { left: 343px; background: url(/templates/jsp/_style2/_achs/images/nextSlide.gif) 0 0; } #highlightPlay, #highlightPause { position: absolute; bottom: 4px; right: 0; display: block; width: 35px; height: 18px; background: url(/templates/jsp/_style2/_achs/images/highlightPlay.gif) 0 0; } #highlightPause { background: url(/templates/jsp/_style2/_achs/images/highlightPause.gif) 0 0; } #highlightNav .prev:hover, #highlightNav .next:hover, #highlightPlay:hover, #highlightPause:hover { background-position: 0 -18px; } ul#slideSelect { float: left; width: 320px; height: 27px; margin: 5px 7px 0 0; padding: 0 35px 0 0; line-height: 28px; vertical-align: middle; display: inline; } ul#slideSelect li { float: left; margin: 0 3px; list-style: none; display: inline; } ul#slideSelect li a { float: left; margin: 0; padding: 2px 7px; border: 1px solid #ccc; text-align: center; text-decoration: none; color: #fff; font: 10px Arial, Helvetica, sans-serif; display: inline; } ul#slideSelect li a:hover { background: #eee; color: #000; } ul#slideSelect li.current a { color: #f00; border: 1px solid #f00; } #slides { float: left; width: 410px; min-height: 206px; margin: 0; padding: 0; } #slides .slide { min-height: 206px; } #slides a:hover { text-decoration: none; } #slides .fullimg a { color: #fff; text-decoration: none; } #slides img.highlightImg { width: 410px; height: 210px; border: 0; } #slides span.title { position: absolute; left: 0; bottom: 27px; display: block; width: 400px; margin: 0; padding: 5px; background: #000; font: normal 13px "Trebuchet MS", Arial, Helvetica, sans-serif; filter: alpha(opacity=80); -moz-opacity: 0.8; -khtml-opacity: 0.8; opacity: 0.8; } #slides h3 { margin: 10px 7px 3px; padding: 0; font-size: .9em; } #slides p { margin: 0 7px 1em; font-size: .8em; } #slides .flLeft { margin-left: 7px; } #slides .flRight { margin-right: 7px; } #aboutJournalBox { position: relative; float: right; width: 358px; min-height: 240px; margin: 5px 7px 7px 0; font-size: .75em; text-align: left; display: inline; /* EXPLORER SUCKS BIGTIME */ } #aboutJournalBox .journalCover { position: absolute; top: 2.4em; left: 0; width: 125px; padding: 0 0 5px; background: #e6e6e6; border: 1px solid #ccc; text-align: center; font-size: .9em; } #aboutJournalBox img { margin: 5px auto; border: 1px solid #b6b6e1; } #aboutJournalBox h2 { margin: 0 10px 0 0; font-size: 1.3em; } #aboutJournalBox p { margin: 0 7px 0 140px; } #aboutJournalBox ul { margin: 7px 0 0 140px; padding: 0; } #aboutJournalBox ul li { margin: 0 7px 3px 17px; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } #aboutJournalBox ul li.noBullet { margin: 0 0 7px; list-style: none; list-style-image: none; color: #444; font-weight: bold; } #copub { margin: 7px 7px 0 140px; padding: 5px 0; border: 1px solid #aaa; font-size: .875em; } #copub img { float: left; margin: 3px 5px 3px 3px; border: 0; } #contentMain { position: relative; clear: left; float: left; width: 798px; } #fullPage { width: 967px; padding: 10px; background: #fff; border: 1px solid #ccc; font-size: .875em; } #textArea { width: 796px; min-height: 45.35em; margin: 0; padding: 0; background: #fff; border: 1px solid #b6b6e1; } #textArea.fullPage { width: 987px; } #textArea h1, #textArea h2, #textArea h3, #textArea h4, #textArea h5, #textArea h6, #textArea p, #textArea ul, #textArea ol, #InstitutionAdmin_Activation div { margin-top: 4px; margin-left: 10px; margin-right: 10px; } #textArea h2 { margin-top: 1.3em; } #textArea h2.subtitle { margin-top: 0; margin-bottom: .7em; font-size: 1em; color: #333; } #textArea p { margin-top: 0; font-size: .8em; } #textArea ul, #textArea ol { padding-left: 40px; } #textArea li { font-size: .8em; } #textArea li li { font-size: 1em; } #textArea dl { margin: 0 11px 11px; font: normal .8em "Trebuchet MS", Arial, Helvetica, sans-serif; } #textArea dl dt { margin: 15px 0 0; font-weight: bold } #textArea dl dd { margin: 0; } #articleArea { float: left; width: 608px; margin: 0; padding: 7px 0 0; background: #fff; border: 1px solid #b6b6e1; display: inline; /* EXPLORER SUCKS BIGTIME */ } #articleAreaHeader { position: relative; float: left; width: 100%; height: 29px; margin: 0; padding: 0; background: url(/templates/jsp/_style2/_achs/images/articleView-tabs-bg.gif) no-repeat; } #articleAreaHeader ul { float: left; height: 25px; margin: 4px 0 0; padding: 0; display: inline; /* EXPLORER SUCKS BIGTIME */ } #articleAreaHeader ul li { float: left; width: auto; height: 25px; margin: 0; padding: 0; list-style: none; } #articleAreaHeader ul li a { display: block; width: 92px; height: 25px; background: transparent url(/templates/jsp/_style2/_achs/images/articleView-tabs.gif); } #articleAreaHeader ul li a span { display: none; } #rssBox { position: absolute; top: 0; right: 0; } #rssBox a { display: block; width: 92px; height: 29px; background: url(/templates/jsp/_style2/_achs/images/rssbox.gif); } /* === Initial States === */ #articleAreaHeader ul li #justAcceptedTab { margin: 0 0 0 4px; background-position: -4px -4px; } #articleAreaHeader ul li #justPublishedTab { margin: 0 0 0 3px; background-position: -99px -29px; } #articleAreaHeader ul li #currentIssueTab { margin: 0 0 0 3px; background-position: -194px -4px; }#articleAreaHeader ul li #mostReadTab { margin: 0 0 0 3px; background-position: -289px -4px; } #articleAreaHeader ul li #mostCitedTab { margin: 0 0 0 3px; background-position: -384px -4px; } /* === Hover States === */ #articleAreaHeader ul li #justAcceptedTab:hover { background-position: -4px -54px !important; } #articleAreaHeader ul li #justPublishedTab:hover { background-position: -99px -54px !important; } #articleAreaHeader ul li #currentIssueTab:hover { background-position: -194px -54px !important; } #articleAreaHeader ul li #mostReadTab:hover { background-position: -289px -54px !important; } #articleAreaHeader ul li #mostCitedTab:hover { background-position: -384px -54px !important; } #justAcceptedArticles, #justPublishedArticles, #currentIssueArticles, #mostReadArticles, #mostCitedArticles { clear: left; width: 609px; margin: 0; padding: 15px 0 0; font-size: .875em; } #justAcceptedArticles, #currentIssueArticles, #mostReadArticles, #mostCitedArticles { display: none; } #articleArea h2 { margin: 0 3px; padding: 4px 7px; font-size: 1.15em; } #articleArea p { margin: 0 10px 15px; font-size: .85em; line-height: normal; } .articleListHeader, .articleListFooter { float: left; width: 587px; margin: 0 0 10px 11px; font-size: .875em; display: inline; } .articleListHeader label, .articleListFooter label { margin: 0 15px 0 0; } .selectAll { float: left; } .articleOptions { float: left; margin: 0 0 0 7px; } .articleOptions a { float: left; cursor: pointer; } .articleOptions a.viewAbs { width: 85px; height: 18px; background: url(/templates/jsp/_style2/_achs/images/viewAbs.png); } .articleOptions a.downCitations { width: 108px; height: 18px; background-image: url(/templates/jsp/_style2/_achs/images/downCit.png); } .articleOptions div.sciFinderOptions { position: relative; float: left; margin-left: 1px; z-index: 300; /* for Explorer */ } .articleOptions .sciFinderOptions a.pulldownLink { display: block; width: 126px; height: 18px; background-image: url(/templates/jsp/_style2/_achs/images/sciFinderOptions.png); } .articleOptions .sciFinderOptions ul { display: block; position: absolute; left: 0; top: 18px; margin: 0; padding: 0; list-style: none; z-index: 300; } .articleOptions .sciFinderOptions ul li { clear: left; float: left; margin: 0; display: inline; /* EXPLORER SUCKS BIGTIME */ } .articleOptions .sciFinderOptions ul li a { display: block; width: 126px; padding: 2px 0 0; border-bottom: 1px solid #fff; background: #69c; color: #fff; text-decoration: none; } .articleOptions .sciFinderOptions ul li a:hover { background: #369; } .articleOptions .sciFinderOptions ul li a span { display: block; margin: 0 2px 0 3px; font-size: 11px; } a.showThumbs { float: right; width: 123px; height: 18px; background: url(/templates/jsp/_style2/_achs/images/showAllThumbs.png); background-position: 0 0; } a.showThumbs:hover { cursor: pointer; } .moreLink { float: right; margin: 4px 10px 0 0; font-size: .85em; text-align: right; line-height: normal; } .viewAllLink { width: 100%; margin: 0 0 15px; font-size: .9em; text-align: center; } #sideCol { float: right; width: 182px; margin: 0; } .sideColBox { display: block; margin: 0 0 10px; padding: 7px; background: #fff; border: 1px solid #b6b6e1; font-size: .8em; line-height: normal; } .sideColBox h2 { margin: 0; padding: 0 0 10px; font-size: 1em; line-height: normal; } .sideColBox h3 { font-size: 1em; line-height: normal; } .sideColBox h4 { font-size: 1.05em; line-height: normal; } #sideCol .sideColBox ul.listBox { margin: 0; padding: 0; } #sideCol .sideColBox ul.listBox li { margin: 0; padding: 4px; margin: 7px 0 0; border: 1px solid #ccc; background-color: #eee; list-style: none; font-size: .9em; } #sideCol .sideColBox div p { font-size: 1em; } .sideColBox p { font-size: .9em; } .sideColBox a { text-decoration: none; } .sideColBox a:hover { text-decoration: underline; } #sideCol .announcements { background: #cfd7e9; border: 1px solid #8f96ca; } /* === Journal TOC === */ body.toc #contentMain { font-size: .875em; } body.toc #articleArea { width: 798px; background: transparent; border: 0; } #tocHead { position: relative; float: left; width: 796px; margin: 0 0 10px; padding: 2px 0 7px; background: #fff; border: 1px solid #b6b6e1; } #asapHead { float: left; width: 788px; margin: 0 0 10px; padding: 0 0 0 10px; } #tocHead #specialIssueNotice { margin: 3px 4px; padding: 0 6px 5px; background: none; font: bold .9em Verdana, Arial, Helvetica, sans-serif; color: #500; } #tocHead p { margin-left: 7px; font-size: .8em; } #tocHead a { text-decoration: none; } #tocHead a:hover { text-decoration: underline; } #tocHead h2 { height: 29px; margin: 0 2px; padding: 7px 0 0 7px; background: url(/templates/jsp/_style2/_achs/images/h2-bg2.gif) repeat-x; line-height: normal; } #asapHead h2 { font-size: 1.1em; padding-bottom: 0; line-height: normal; } #asapHead p { font-size: .875em; } #issueNav { position: absolute; top: 2px; right: 0; width: 211px; height: 29px; background: url(/templates/jsp/_style2/_achs/images/issueNav.gif) no-repeat 0 -58px; } #issueNav a { position: absolute; top: 0; display: block; height: 29px; margin: 0; background: url(/templates/jsp/_style2/_achs/images/issueNav.gif) no-repeat; } #issueNav .previous { left: 0; width: 115px; background-position: 0 0; } #issueNav .next { left: 115px; width: 96px; background-position: -115px 0; } #issueNav .previous:hover { background-position: 0 -29px; } #issueNav .next:hover { background-position: -115px -29px; } #issueNav a span { margin-left: -5000px; } #tocCover { float: left; width: 121px; margin: 7px 0 0 5px; border: 1px solid #bfd3e3; text-align: center; font-size: .8em; display: inline; /* EXPLORER SUCKS BIGTIME */ } #tocCover img { border: 1px solid #ccc; margin: 3px auto; } #tocMenu { float: left; width: 655px; margin: 7px 0 7px 7px; } #tocMeta { float: left; width: 150px; margin: 0 0 0 7px; font-size: .8em; display: inline; /* EXPLORER SUCKS BIGTIME */ } #date { font-weight: bold; } #tocNav { width: 460px; float: left; margin: 0 0 0 5px; } #tocNav h4 { margin: 0; font-size: .8em; color: #444; } #tocNav ul { clear: none; display: block; width: 586px; margin: 3px 0 0 0; padding: 0; } #tocNav ul li { float: left; width: 148px; margin: 0 0 4px 17px; padding: 0 0 7px; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); font: 10px "Trebuchet MS", Arial, sans-serif; line-height: normal; vertical-align: middle; text-transform: uppercase; } #tocNav li img { margin-right: 2px; } #tocNav a:visited { color: #369; } #tocMenu #sampleNotice { clear: left; float: left; width: 95%; margin: 15px 7px 0 7px; padding: 3px; background: #daebe1; font-size: .8em; line-height: 15px; display: inline; /* EXPLORER SUCKS BIGTIME */ } #sampleNotice img, #sampleNotice span { line-height: 15px; vertical-align: middle; } #sampleNotice img { width: 44px; height: 13px; } #tocMenu #coverDesc { clear: left; margin: 0 7px 7px 7px; padding: 15px 0 0; font-size: .8em; } #tocMenu #coverDesc a { text-decoration: underline; } #tocMenu #coverDesc a:hover { text-decoration: none; } #tocHead .description { margin: 0 9px; padding: 0; font-size: .8em; } #tocHead .blurb { margin: 0 7px; font-size: .8em; } #asapHead .blurb { margin: 0; font-size: .8em; } #acNotice { clear: both; margin: 0 0 10px; padding: 3px 2px; border: 1px solid #ccc; background: #fcfcfc; font-size: .8em; } #acNotice img { margin: 0 3px; vertical-align: middle; } #acNotice span, #acNotice a { vertical-align: bottom; } body.toc .articleListHeader, body.toc .articleListFooter { width: 786px; margin-left: 12px; } body.toc .articleListFooter { margin-top: 10px; } body.search .articleListHeader, body.search .articleListFooter { width: 633px; } body.user .articleListHeader { width: 805px; font-size: .8em !important; } body.user .articleListFooter { width: 805px; font-size: .8em !important; } .articleGroup, .mostArticles { clear: both; margin: 10px 0 0; background: #fff; } .ASAP { border-top: 1px solid #bfd3e3; } .articleGroupHead { background: #6982ba url(/templates/jsp/_style2/_achs/images/toc-h3-tl.gif) no-repeat left top; } .articleGroup h3 { display: block; padding: 4px 7px 3px 10px; background: url(/templates/jsp/_style2/_achs/images/toc-h3-tr.gif) no-repeat right top; font-size: .8em; color: #fff; text-transform: uppercase; } .articleGroup h4 { display: block; padding: 3px 7px 7px 10px; font-size: .875em; color: #600; } .articles { padding: 10px 0 0; border: 1px solid #bfd3e3; border-top: 0; height: 1%; } .mostArticles .articles { border: 1px solid #bfd3e3; } #mostNav { float: left; margin: 0 0 15px; } #mostNav h3 { float: left; margin: .2em 0 0 10px; padding: 0; font-size: 1em; color: #000; } #mostNav ul { float: left; margin: 0 0 0 10px; padding: 0; list-style: none; } #mostNav ul li { float: left; margin: 0 5px; } #mostNav ul li a { text-decoration: none; } #mostNav ul li span { display: block; padding: 1px 5px; border: 1px solid #ccc; background: #eee; font-size: .875em; } #mostNav ul li a:hover span { background: #369; color: #fff; } #mostNav ul li.onPage span { font-weight: bold; color: #000; } /* === Article Boxes === */ .articleBox { position: relative; clear: both; margin: 0 10px 15px; padding: 0; border: 1px solid #bfd3e3; background: #fff url(/templates/jsp/_style2/_achs/images/gradient.gif) repeat-x; height: 1%; } .articleCheck { position: absolute; top: 0; left: 0; width: 20px; margin: 3px 0 0; } .articleBox a { color: #35659a; text-decoration: none; } .articleBox a:hover { text-decoration: underline; } .articleBoxMeta { float: left; width: 385px; margin: 5px 0 0 20px; font: .875em "Trebuchet MS", Arial, Helvetica, sans-serif; display: inline; /* EXPLORER SUCKS BIGTIME */ } body.toc .articleBoxMeta { width: 550px; } body.search .articleBoxMeta { width: 410px; } #textArea .articleBoxMeta { font-size: .95em; } #aiContent .articleBoxMeta { width: 580px; } #articleArea .articleBox h2 { margin: 0 0 5px 0; padding: 0; background: transparent; } .articleBox h2 a { color: #000; } .articleAuthors { margin: 0 0 5px; } .manType { color: #600; } .articleLinksIcons { float: right; width: 160px; margin: 7px 5px 7px 0; padding: 0 0 0 7px; text-align: left; font: .875em Arial, Helvetica, sans-serif; display: inline; /* EXPLORER SUCKS BIGTIME */ } body.toc .articleLinksIcons, body.user .articleLinksIcons { width: 170px; } .articleLinksIcons div { margin: 0 0 15px; } .articleLinksIcons .icons { margin-bottom: 5px; } .articleLinksIcons ul, #textArea .articleLinksIcons ul { margin: 0 0 15px; padding: 0; list-style: none; } .articleLinksIcons ul li, #textArea .articleLinksIcons ul li { margin: 0 0 2px; padding: 0; } body.user #textArea .articleLinksIcons ul li { font-size: 1em; } .articleLinksIcons ul li a, #textArea .articleLinksIcons ul li a { margin: 0 4px 2px 0; } .articleLinksIcons ul a img { margin: 0 4px 0 0; } .articleLinksIcons div div { margin: 0 0 2px; } .articleBox .icons div { clear: left; display: block; margin: 0 0 2px; color: #444; line-height: 1.5em; vertical-align: middle; } .articleBox .icons img { float: left; margin: 0 4px 0 2px; } .articleBoxMeta .icons { float: left; margin: 5px 0; display: inline; /* EXPLORER SUCKS BIGTIME */ } .figureTray-wrap { clear: both; display: block; width: 100%; background: url(/templates/jsp/_style2/_achs/images/tray-bg-r.gif) no-repeat right top; } .figureTray { display: block; width: 100%; padding: 0; background: url(/templates/jsp/_style2/_achs/images/tray-bg-l.gif) no-repeat left top; text-align: center; } .figureBox { display: block; min-height: 160px; width: 100%; margin: 0; padding: 0; } .articleFigure { margin: 0 auto; background: transparent; } .articleFigure img { margin: 0 0 7px; padding: 7px; border: 1px solid #ccc; } #justAcceptedArticles .articleFigure, #justPublishedArticles .articleFigure, #currentIssueArticles .articleFigure, #mostReadArticles .articleFigure, #mostCitedArticles .articleFigure { overflow: hidden; } .articleFigure img.tocGraphic { max-width: 540px; max-height: 160px; } .trayHandle { position: relative; display: block; width: 100%; height: 19px; margin: 0; padding: 3px 0; background: url(/templates/jsp/_style2/_achs/images/handle-bg.gif) no-repeat right bottom; text-align: right; } .figureBox .trayHandle { margin: 7px 0 0; background: #e4e2e2; } .figureNav { left: 0; width: 100%; height: 19px; text-align: center; } .figureNav span { line-height: 20px; vertical-align: middle; font-size: .8em; } .figureNav a { position: absolute; top: 2px; display: block; height: 19px; } .figureNav a.prev { left: 150px; width: 64px; background: url(/templates/jsp/_style2/_achs/images/previousFig.gif) no-repeat 0 0; } .figureNav a.prev:hover { background-position: 0 -20px; } .figureNav a.next { right: 167px; width: 47px; background: url(/templates/jsp/_style2/_achs/images/nextFig.gif) no-repeat 0 0; } .figureNav a.next:hover { background-position: 0 -20px; } body.toc a.prev, body.user a.prev { left: 233px; } body.toc a.next, body.user a.next { right: 250px; } body.search a.prev { left: 190px; } body.search a.next { right: 197px; } .trayHandle .weo { position: absolute; top: 2px; left: 10px; display: block; width: 96px; height: 19px; overflow: hidden; } .trayHandle a.show, .trayHandle a.hide { position: absolute; top: 3px; right: 0; display: block; width: 118px; height: 19px; } .trayHandle a.show { background: url(/templates/jsp/_style2/_achs/images/showThumbs.gif) no-repeat 0 0; } .trayHandle a.show:hover { background-position: 0 -19px; } .trayHandle a.hide { background: url(/templates/jsp/_style2/_achs/images/hideThumbs.gif) no-repeat 0 0; } .trayHandle a.hide:hover { background-position: 0 -19px; } /* === ARTICLE === */ #articleContent { float: left; width: 796px; margin: 0 0 20px 5px; padding: 0; border: 1px solid #b6b6e1; background: #fff url(/templates/jsp/_style2/_achs/images/articleContent-bg.gif) repeat-y right top; display: inline; /* EXPLORER SUCKS BIGTIME */ } #articleContent h3 { font-size: 1em !important; } #articleHead { position: relative; clear: both; margin: 0; padding: 2px 0 0; background: #fff; } #articleNav, #articleNavC, #articleNavD { position: absolute; top: 2px; right: 0; width: 227px; height: 29px; background: url(/templates/jsp/_style2/_achs/images/articleNav.gif) no-repeat 0 -58px; } #articleNav a, #articleNavC a, #articleNavD a { position: absolute; height: 29px; background: url(/templates/jsp/_style2/_achs/images/articleNav.gif); } #articleNavC, #articleNavC a { background-image: url(/templates/jsp/_style2/_achs/images/articleNav-ASAP.gif); } #articleNavD { width: 268px; } #articleNavD, #articleNavD a { background-image: url(/templates/jsp/_style2/_achs/images/articleNav-JAM.gif); } #articleNav .previous, #articleNavC .previous, #articleNavD .previous { left: 0; width: 65px; background-position: 0 0; } #articleNav .previous:hover, #articleNavC .previous:hover, #articleNavD .previous:hover { background-position: 0 -29px; } #articleNav .next, #articleNavC .next, #articleNavD .next { left: 65px; width: 64px; background-position: -65px 0; } #articleNav .next:hover, #articleNavC .next:hover, #articleNavD .next:hover { background-position: -65px -29px; } #articleNav .tocLink, #articleNavC .tocLink, #articleNavD .tocLink { left: 129px; width: 93px; background-position: -129px 0; } #articleNavD .tocLink { width: 134px; } #articleNav .tocLink:hover, #articleNavC .tocLink:hover, #articleNavD .tocLink:hover { background-position: -129px -29px; } #articleNav span, #articleNavB span, #articleNavC span, #articleNavD span, #articleNavE span, #articleNavF span { margin-left: -5000px; } #articleHead h2 { height: 29px; margin: 0 2px; padding: 7px 0 0 8px; color: #304e96; background: url(/templates/jsp/_style2/_achs/images/h2-bg2.gif) repeat-x; line-height: normal; } #articleNavB, #articleNavE, #articleNavF { position: absolute; top: 2px; right: 0; width: 102px; height: 29px; } #articleNavF { width: 143px; background: url(/templates/jsp/_style2/_achs/images/jamLink.gif); } #articleNavB .tocLink, #articleNavE .tocLink, #articleNavF .tocLink { display: block; width: 102px; height: 29px; background: url(/templates/jsp/_style2/_achs/images/tocLink.gif); } #articleNavE .tocLink { background: url(/templates/jsp/_style2/_achs/images/asapLink.gif); } #articleNavF .tocLink { width: 143px; background: url(/templates/jsp/_style2/_achs/images/jamLink.gif); } #articleNavB .tocLink:hover, #articleNavE .tocLink:hover, #articleNavF .tocLink:hover { background-position: 0 -29px; } #articleMain { clear: both; float: left; width: 616px; margin: 0 0 0 10px; display: inline; /* EXPLORER SUCKS BIGTIME */ } #specialIssueNotice { clear: both; display: block; padding: 7px; background: #eaeaea; } #authorBio { clear: both; margin: 5px 0; padding: 7px; background: #ffc; } #articleMain h1 { margin-bottom: 15px; font-size: 1.15em; color: #000; } #articleMain h2.deck { margin: 1em 0 15px; font: bold .95em "Trebuchet MS", Arial, Helvetica, sans-serif; color: #333 !important; } #articleMain #links { float: right; width: 275px; margin: 0 0 15px 10px; background: url(/templates/jsp/_style2/_achs/images/gradient1.gif) repeat-x; text-align: left; display: inline; /* EXPLORER SUCKS BIGTIME */ } #links ul { float: left; width: 120px; margin: 5px 0 0 5px; padding: 0; list-style: none; display: inline; /* EXPLORER SUCKS BIGTIME */ } #links ul.wide { width: 140px; } #links ul li { clear: left; float: left; width: 100%; margin: 0 0 7px; padding: 0; font-size: .75em; list-style: none; display: inline; /* EXPLORER SUCKS BIGTIME */ } #links ul li a, #links ul li a:visited { float: left; color: #369; text-decoration: none; display: inline; /* EXPLORER SUCKS BIGTIME */ } #links ul li a:hover { color: #fff; background: #369; cursor: pointer; } #links ul li span { margin: 0; padding: 2px 3px; display: inline; /* EXPLORER SUCKS BIGTIME */ } #links ul li span.filesize { clear: none; padding: 0 2px 0 0; font-size: .75em; } #links ul li img { position: relative; top: 2px; margin: 0 3px 0 0; } #links ul li.onPage span { float: left; padding: 0 3px; border: 1px solid #81a2c1; background: #369; color: #fff; } #links ul li span.blurb { clear: left; display: block; margin-top: -4px; padding: 0 3px; font-size: .9em; } #articleMeta { margin-top: 15px; font-size: .8em; line-height: 1.3em; } #authors { font-size: 1em; font-weight: bold; color: #333; } #affiliation, #citation, #doi, #pubDate, #correspondence, #artCopyright { font-size: .9em; } #artCopyright { font-weight: bold; } #affiliation, #citation { margin: 10px 0 0; } #correspondence, #articleIcons { width: auto; margin: 7px 0 0; color: #666; } #articleIcons { float: left; margin: 7px 0; } #articleIcons div { float: left; height: 19px; margin-right: 10px; overflow: hidden; } #articleTools { clear: none; float: right; width: 160px; margin: 0 4px; background: #d1e6f6; display: inline; /* EXPLORER SUCKS BIGTIME */ } #articleTools h3 { display: block; margin: 20px 0 0; padding: 5px 2px 5px 10px; font: normal .8em Arial, Helvetica, sans-serif !important; color: #fff; background: #8495ba; } #articleTools h3.lesspad { margin: 0; } #articleTools ul { display: block; width: 159px; margin: 0; padding: 0; border-top: 1px solid #aebedc; border-right: 1px solid #a3b2d4; list-style: none; } #articleTools ul li { margin: 0; padding: 0; border-top: 1px solid #fff; border-bottom: 1px solid #aebedc; font-size: .7em; } #articleTools ul.noBG li { border: 0; background: transparent; font-size: .7em; } #articleTools ul li img { margin: 0 5px 0 2px; } #articleTools li a, #articleTools li a:visited { display: block; border-left: 5px solid #a3b2d4; background: #d1e6f6; text-decoration: none; color: #369; } #articleTools li a:hover { border-left: 5px solid orange !important; background: #fff !important; } #articleTools div { margin: 0 0 5px 10px; padding: 0; font-size: .7em; } #permalink span { position: absolute; display: block; width: 300px; margin: 0 0 0 -142px; background: #eee; border: 1px solid #555; z-index: 9000; } #container #articleTools #permalink span a.hide, #container #articleTools #permalink span a.hide:hover { float: right; width: 15px; height: 15px; margin: 2px; border: 0 !important; background: url(/templates/jsp/_style2/_achs/images/select-x.gif) no-repeat !important; display: inline; /* EXPLORER SUCKS BIGTIME */ } #permalink input { margin: 5px; font-size: 11px; } #permalink span span { position: static; display: block; width: auto; margin: 5px 5px 0 5px; border: 0; } #articleTools #casSection { margin: 20px 0; border-bottom: 3px solid #a3b2d4; font-size: 1em; background: #fff; } #casSection li.first { border-top: 0; } #casSection #casSectionHead { width: 155px; margin: 0; padding: 0; border: 3px solid #a3b2d4; border-left: 5px solid #a3b2d4; border-right: 0; } ul#casExplore { background: url(/templates/jsp/_style2/_achs/images/casTools-bg.jpg); } #articleTools #casSection ul li a { display: block; padding-left: 5px; } ul#casExplore li a { background: transparent; } #articleTools #casSection ul li a:hover { background: #fff; } #articleTools #casSection ul li h4 { margin: 0 0 4px 5px; font-weight: normal; color: #369; } form#casToolAuthor, form#casToolTopic { position: relative; display: block; margin: 0; padding: 7px 0; border-left: 5px solid #a3b2d4; } #casSection form select, .exploreText { width: 145px; margin: 5px 0 0 5px; font-size: .9em; } #exploreText { width: 138px; } form#casToolTopic .submit, form#casToolAuthor .submit { position: absolute; top: 5px; right: 6px; } #articleTools ul.history li { padding: 3px 0 3px 10px; line-height: normal; background: #d1e6f6; } #articleTools ul.history li strong { display: block; font-weight: normal; } #articleTools ul.accession li a { display: block; padding-left: 5px; } #rightColumn ul#relatedArticles { display: block; margin: 0 0 25px; padding: 0; list-style: none; height: 1%; /* for IE */ } ul#relatedArticles a { display: block; height: 1%; /* for IE */ } ul#relatedArticles a:hover { text-decoration: none; } #rightColumn ul#relatedArticles li { position: relative; display: block; margin: 10px 4px 10px 7px; padding: 0; height: 1%; /* for IE */ } #rightColumn ul#relatedArticles li ul { position: absolute; left: -372px; top: -6em; width: 372px; margin: 0; padding: 0; background: transparent url(/templates/jsp/_style2/_achs/images/relatedBG.gif) no-repeat; font-size: .95em; z-index: 5000; display: none; } #rightColumn ul#relatedArticles li ul li { display: block; width: 330px; min-height: 180px; margin-top: 0; margin-bottom: 0; padding: 7px 7px 3em 7px; border: 2px solid #90b8df; border-right: 0; background: #ffffe4; } #rightColumn ul#relatedArticles li:hover, #rightColumn ul#relatedArticles li.over { background: #ffffe4; } #rightColumn ul#relatedArticles li:hover ul, #rightColumn ul#relatedArticles li.over ul { display: block; } #rightColumn ul#relatedArticles ul h3 { margin: 0 0 5px; font-size: 1em; line-height: normal; color: #000; } #rightColumn ul#relatedArticles ul div { margin: 0 0 5px; } #rightColumn ul#relatedArticles ul div.linkbar { position: absolute; bottom: 0; left: 0; width: 344px; margin: 0; padding: 5px 0; background: #ffc; color: #369; border-top: 1px solid #999; text-align: center; line-height: normal; } #rightColumn ul#relatedArticles div.linkbar a { display: inline; padding: 0 3px; color: #369; white-space: nowrap; } #rightColumn ul#relatedArticles div.linkbar a:hover { text-decoration: underline; } #rightColumn ul#relatedArticles ul p { margin: 5px 0; padding-top: 5px; line-height: normal; border-top: 1px solid #999; } #rightColumn ul#relatedArticles cite { font-size: 1em; color: #000; display: inline; } .contextualAds { min-height: 450px; } .contextualAds div { margin: 10px 7px; padding: 7px 0 0; border-top: 1px solid #ccc; } .contextualAds div.noBorder { border: 0; } #articleBody { clear: both; float: left; width: 610px; margin: 0; padding: 0 0 10px; font-size: .875em; } #articleBody h2 { clear: left; width: 430px; padding: 20px 0 3px; font: bold 1.1em "Trebuchet MS", Arial, Helvetica, sans-serif; } #articleBody hr { clear: right; display: block; height: 1px; margin: 2px 0 10px; background: #bbc5df; border: 0; } ul.anchors { position: relative; float: right; width: 164px; margin: 0; padding: 20px 0 0; z-index: 1; /* strange, but necessary */ } ul.anchors li { position: absolute; display: block; margin: 0; padding: 0; } ul.anchors a.anchorIMG { display: block; width: 164px; height: 20px; background: url(/templates/jsp/_style2/_achs/images/pulldown-anchors.gif) no-repeat; } ul.anchors li ul { position: absolute; display: block; width: 162px; margin: 0; padding: 0; border-left: 1px solid #666; border-right: 1px solid #666; list-style: none; background: #e9edf4; } ul.anchors li ul li { position: static; display: block; width: 100%; margin: 0; padding: 0; border-bottom: 1px solid #666; } ul.anchors li ul li a, .anchors ul li a:visited { display: block; width: 162px; padding: 4px 0; background: transparent; color: #021351; text-decoration: none; font-size: .8em; } ul.anchors li ul li a:hover { background: #fff; cursor: pointer; } ul.anchors li ul li a span { display: block; width: 156px; margin: 0 2px 0 4px; line-height: normal; } .overlay { position: absolute; left: 0; bottom: 0; width: 21px; height: 21px; background: url('/templates/jsp/_style2/_achs/images/enlarge-overlay.gif'); filter: alpha(opacity=85); -moz-opacity: 0.85; -khtml-opacity: 0.85; opacity: 0.85; cursor: pointer; } #abstractBox, #supInfoBox { float: left; width: 608px; margin: 5px 0; border: 1px solid #bbc5df; background: #f4f9fd; } #abstractBox { padding-top: 7px; } #absImg { position: relative; float: right; margin: 7px; padding: 5px; border: 1px solid #ccc; background: #fff; } #articleBody #abstractBox p { margin-left: 7px; margin-right: 7px; } #supInfoBox h3 { margin: 7px 0 0 7px; font-size: 1em; color: #000; } #supInfoBox ul { margin: 0 0 20px; padding: 0 0 0 25px; } #supInfoBox ul li { list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } #supInfoBox ul li img { margin: 0 5px 0 0; } #supInfoBox p { font-size: .875em; margin: 10px 7px 7px 7px; } .figure { float: left; width: 100%; margin: 10px 0 15px; border-top: 1px solid #666; border-bottom: 1px solid #666; background: #eee; } a.thumbnail { position: relative; float: left; margin: 7px 15px 7px 7px; padding: 5px; border: 1px solid #ccc; background: #fff; } .figure .caption { margin: 7px; font: .9em Arial, Helvetica, sans-serif; } #articleMain ol { margin: 0 0 0 35px; padding: 0; } #articleMain ol li { margin: 0 0 10px; word-wrap: break-word; } #citedBy { float: left; display: block; margin: 0; padding: 0; font-size: .9em; } #citedBy a { display: block; height: 1%; /* for IE */ } /* Atypon - contributor links must be inline */ #citedBy .contributors a { display: inline; height: auto; } #citedBy a:hover { text-decoration: none; } #citedBy li { position: relative; clear: left; float: left; display: block; width: 585px; margin: 5px 0; padding: 7px; z-index: 5000; /* for IE */ } #citedBy li.blue { background: #f0f9fd; } #citedBy .cover { float: left; width: 90px; margin: 0 7px 0 0; border: 1px solid #ccc; } #articleBody #citedBy h2 { clear: none; margin: 0; padding: 0; font-size: 1em; width: auto; } #citedBy h2 a { text-decoration: none; } #citedBy h2 a:hover { text-decoration: underline; } #citedBy li ul { position: absolute; right: -365px; top: -10em; width: 373px; margin: 0; padding: 0; background: url(/templates/jsp/_style2/_achs/images/citedBG.gif) no-repeat; font-size: .875em; z-index: 8000; display: none; } #citedBy li ul li { float: right; width: 330px; min-height: 180px; margin-top: 0; margin-bottom: 0; padding: 7px 7px 3em 7px; border: 2px solid #90b8df; border-left: 0; background: #ffffe4; } #citedBy li:hover, #citedBy li.over { background: #ffffe4; } #citedBy li:hover ul, #citedBy li.over ul { display: block; } #citedBy ul h3 { margin: 0 0 5px; font-size: 1em; line-height: normal; color: #000 !important; } #citedBy ul div { margin: 0 0 5px; } #citedBy div.linkbar { position: absolute; bottom: 0; left: 0; width: 344px; margin: 0; padding: 5px 0; background: #ffc; color: #369; border-top: 1px solid #999; text-align: center; line-height: normal; } #citedBy div.linkbar a { display: inline; padding: 0 3px; color: #369; white-space: nowrap; text-decoration: none; } #citedBy div.linkbar a:hover { text-decoration: underline; } #citedBy ul p { margin: 5px 0; padding-top: 5px; line-height: normal; border-top: 1px solid #999; } #citedBy cite { font-size: 1em; color: #000; } sup a.ref { padding: 3px; font-size: 1.1em; } a.ref:hover { background: #369; color: #fff; text-decoration: none; } span.ref .balloon a { font-size: 1em; text-decoration: underline; } span.ref .balloon a:hover { text-decoration: none; background: transparent; color: #369; } .balloon-wrap { position: absolute; margin: -10px 0 0 2px; padding: 0 0 0 18px; background: transparent url(/templates/jsp/_style2/_achs/images/balloon-notch.gif) no-repeat; z-index: 8000; display: none; } .balloon { float: left; width: 360px; padding: 0 7px 7px 7px; border: 2px solid #90b8df; border-left: 0; background: #ffffe4; line-height: normal; font-size: 12px; color: #444; text-decoration: none; } .balloon a.close { float: right; width: 15px; height: 15px; margin: 7px 0 5px 7px; padding: 0; background: url(/templates/jsp/_style2/_achs/images/select-x.gif) no-repeat; } span.ref .balloon a { padding: 0; } span.ref .balloon a.close:hover { background: url(/templates/jsp/_style2/_achs/images/select-x.gif) no-repeat; } .balloon span { display: block; margin: 10px 0 0; } .balloon span span { display: inline;} span.ref .balloon .refLink { float: right; margin: 7px 0 0; } .citationLinks { display: inline; margin-left: .1em; } body.article .rtColBox, body.newsStory .rtColBox { padding: 0 0 7px; } body.article .rtColBox div, body.newsStory .rtColBox div, body.article .rtColBox p, body.newsStory .rtColBox p { margin: 0 7px; } body.article .rtColBox h2, body.newsStory .rtColBox h2 { margin: 2px 2px 10px 2px; padding: 4px 7px; background: url(/templates/jsp/_style2/_achs/images/h2-bg2.gif) repeat-x; } body.article #container .rtColBox h3 { margin-left: 7px; font: bold 1em 'Trebuchet MS', Arial, Helvetica, sans-serif; color: #000; } body.article #rightColumn ul { margin: 0 5px 25px 7px; list-style: none; } body.article #rightColumn ul li { margin: 10px 0; list-style-image: none; } body.article #rightColumn ul.oneline { margin-top: 7px; } body.article #rightColumn ul.oneline li { margin: 2px 0; } body.article ul li cite { display: block; margin: 0; padding: 0; color: #444; font-size: .9em; height: 1%; } /* === VARIATIONS OF ABSTRACT PAGE === */ .archiveNote { clear: both; width: 100%; margin-top: 15px; padding: 7px 0; border-top: 1px solid #600; border-bottom: 1px solid #600; background: #ffc; } .archiveNote p { margin: 0 10px; font-size: .8em; line-height: normal; } #firstPage img { width: 99%; margin: 7px 0; border: 1px solid #ccc; } .access { clear: both; float: left; width: 608px; margin: 10px 0 20px; padding: 0; border: 1px solid #999; background: #ffffe4; line-height: normal; } .access div div { margin: 0 0 0 7px; font-size: .75em; } .access h4 { margin: 0 0 0 7px; padding: 0; font-size: .8em; font-weight: bold; color: #500; } .access .head { height: 20px; padding: 3px 0; background: #ffc; border-bottom: 1px solid #ccc; color: #500; line-height: 20px; } .head img { float: left; margin: 0 7px; } .access .explanation { float: left; width: 300px; margin: 7px 7px 0 0; padding: 0; } .access ul { margin: 3px 0 10px; padding: 0 0 0 25px; font-size: .75em; } .access ul li { margin-bottom: 3px; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } .access .signIn, .access .purchase { float: right; width: 292px; margin: 0 0 0 7px; padding: 7px 0 0; border-left: 1px solid #ccc; border-bottom: 1px solid #ccc; display: inline; /* EXPLORER SUCKS BIGTIME */ } .access .signIn { border-bottom: 0; } .signIn form { margin: 0; padding: 0; } .signIn .row { margin-left: 0; } .signIn label { clear: none; float: left; width: 133px; margin: 10px 0 0 7px; font-weight: bold; } .signIn input { width: 125px; margin: 0 0 0 7px; padding: 0; } .signIn .error { float: left; margin: 7px 7px 0; color: #500 !important; font-family: Arial, Helvetica, sans-serif !important; } .signIn #submit { width: auto; margin: 10px 15px 0 7px; } .searchTip { clear: both; float: left; width: 100%; margin: 0; padding: 0; border-bottom: 1px solid #400; background: #ffc; line-height: normal; display: inline; /* EXPLORER SUCKS BIGTIME */ } .searchTip img { float: left; margin: 7px; } .searchTip div { font-size: .75em; margin: 7px 7px 7px 0; } .searchTip div a { white-space: nowrap; } /* === START OF FIGURE VIEWER STYLES === */ #figureViewer-wrap { position: absolute; left: 0; width: 899px; margin: 0 50px; padding: 0; background: transparent url(/templates/jsp/_style2/_achs/images/figureViewer-bg1.gif) no-repeat; z-index: 9000; } #figureViewer { margin: 0; width: 899px; margin: 15px 0 0; background: #e3e1e2 url(/templates/jsp/_style2/_achs/images/figureViewer-bg2.gif) repeat-y; } #figureViewerNav { position: relative; width: 899px; height: 2em; line-height: 20px; margin: 0; } #figureViewerNav .figureNav { position: absolute; width: 280px; left: 310px; } #figureViewerNav a.prev { top: 0; left: 0; } #figureViewerNav a.next { top: 0; right: 0; } #figureViewerNav .figureNav span { font-size: .75em; vertical-align: bottom; } #figureViewerNav a.close { position: absolute; top: -5px; right: 16px; width: 100px; min-height: 15px; padding: 0 20px 0 0; background: url(/templates/jsp/_style2/_achs/images/select-x.gif) no-repeat top right; font: .7em Arial, Helvetica, sans-serif; text-align: right; text-decoration: none; } #figureViewerNav a.close:hover { text-decoration: underline; } #figureCanvas { position: relative; width: 870px; min-height: 200px; margin: 0 0 0 12px; border: 1px solid #666; background: #fff; text-align: center; } #figureCanvas .figBox { float: none; display: block; width: 800px; margin: 0 auto 15px; padding: 10px 0 0; border: 0; background: #fff; } .figBox img { display: block; border: 1px solid #ccc; margin: 7px auto; padding: 7px; max-width: 500px; } #figureCanvas #figTools { position: absolute; top: 10px; left: 3px; text-align: left; } #figTools div { height: 19px; margin: 0 0 5px; overflow: hidden; } #figTools div.weo { width: 105px; } #figTools div.highRes { width: 115px; } #figTools div.ppt { width: 168px; } #figTools div a { display: block; height: 19px; } #figTools div.weo a { background: url(/templates/jsp/_style2/_achs/images/icon-weo.gif) no-repeat; } #figTools div.highRes a { background: url(/templates/jsp/_style2/_achs/images/icon-highres.gif) no-repeat; } #figTools div.ppt a { background: url(/templates/jsp/_style2/_achs/images/icon-ppt.gif) no-repeat; } #figTools div a:hover { background-position: 0px -19px; } #figTools div a span { display: none; } #figureCanvas .caption { margin: 7px 7px 0 7px; padding: 10px 0; border-top: 1px solid #ccc; font: .8em 'Trebuchet MS', Arial, Helvetica, sans-serif; } #figureViewer-footer { display: block; width: 899px; height: 15px; } /* === END OF FIGURE VIEWER STYLES === */ /* === Cited By Page === */ #fullCitList h2 { margin: 0 !important; padding: 0 !important; } /* === AUTHOR INDEX === */ #aiContent { width: 796px; margin: 0 0 0 5px; padding: 0; border: 1px solid #b6b6e1; background: #fff; } #aiContent h3 { margin: 5px 0 10px 7px; } #aiVolJump { display: block; margin: 20px 0 15px; font-size: .875em; } #aiVolJump strong { margin-left: 7px; font-size: .875em; } div.subLinks a { margin: 0 0 0 7px; font-size: .8em; } #aiContent .articles { padding: 10px 0 0; border: 0; } #container #aiContent .articleBox h2 { font-size: 1.1em; background: transparent !important; } #mainBody #aiContent .articleBox h3 { margin: 0; padding: 0; font-size: 1.1em; color: #333; } #aiContent .articleBox { font-size: .875em; } #aiContent .articleBox div { margin-left: 5px; } #aiContent .articleBox div div { margin-left: 0; } #aiContent .noFigFooter { clear: both; } div.alphaSelect { display: block; width: 782px; height: 24px; margin: 0 auto 7px auto; background: url(/templates/jsp/_style2/_achs/images/alphabet.gif); } div.alphaSelect a { float: left; width: 30px; height: 24px; background: url(/templates/jsp/_style2/_achs/images/alphabet.gif); } div.alphaSelect a:hover { cursor: pointer; } div.alphaSelect a span { display: block; width: 30px; height: 24px; background: transparent; } div.alphaSelect a.a { background-position: 0 0; } div.alphaSelect a.a:hover { background-position: 0 -48px; } div.alphaSelect a.a span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) 0 -24px; } div.alphaSelect a.b { background-position: -30px 0; } div.alphaSelect a.b:hover { background-position: -30px -48px; } div.alphaSelect a.b span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -30px -24px; } div.alphaSelect a.c { background-position: -60px 0; } div.alphaSelect a.c:hover { background-position: -60px -48px; } div.alphaSelect a.c span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -60px -24px; } div.alphaSelect a.d { background-position: -90px 0; } div.alphaSelect a.d:hover { background-position: -90px -48px; } div.alphaSelect a.d span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -90px -24px; } div.alphaSelect a.e { background-position: -120px 0; } div.alphaSelect a.e:hover { background-position: -120px -48px; } div.alphaSelect a.e span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -120px -24px; } div.alphaSelect a.f { background-position: -150px 0; } div.alphaSelect a.f:hover { background-position: -150px -48px; } div.alphaSelect a.f span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -150px -24px; } div.alphaSelect a.g { background-position: -180px 0; } div.alphaSelect a.g:hover { background-position: -180px -48px; } div.alphaSelect a.g span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -180px -24px; } div.alphaSelect a.h { background-position: -210px 0; } div.alphaSelect a.h:hover { background-position: -210px -48px; } div.alphaSelect a.h span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -210px -24px; } div.alphaSelect a.i { background-position: -240px 0; } div.alphaSelect a.i:hover { background-position: -240px -48px; } div.alphaSelect a.i span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -240px -24px; } div.alphaSelect a.j { background-position: -270px 0; } div.alphaSelect a.j:hover { background-position: -270px -48px; } div.alphaSelect a.j span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -270px -24px; } div.alphaSelect a.k { background-position: -300px 0; } div.alphaSelect a.k:hover { background-position: -300px -48px; } div.alphaSelect a.k span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -300px -24px; } div.alphaSelect a.l { background-position: -330px 0; } div.alphaSelect a.l:hover { background-position: -330px -48px; } div.alphaSelect a.l span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -330px -24px; } div.alphaSelect a.m { background-position: -360px 0; } div.alphaSelect a.m:hover { background-position: -360px -48px; } div.alphaSelect a.m span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -360px -24px; } div.alphaSelect a.n { background-position: -390px 0; } div.alphaSelect a.n:hover { background-position: -390px -48px; } div.alphaSelect a.n span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -390px -24px; } div.alphaSelect a.o { background-position: -420px 0; } div.alphaSelect a.o:hover { background-position: -420px -48px; } div.alphaSelect a.o span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -420px -24px; } div.alphaSelect a.p { background-position: -450px 0; } div.alphaSelect a.p:hover { background-position: -450px -48px; } div.alphaSelect a.p span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -450px -24px; } div.alphaSelect a.q { background-position: -480px 0; } div.alphaSelect a.q:hover { background-position: -480px -48px; } div.alphaSelect a.q span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -480px -24px; } div.alphaSelect a.r { background-position: -510px 0; } div.alphaSelect a.r:hover { background-position: -510px -48px; } div.alphaSelect a.r span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -510px -24px; } div.alphaSelect a.s { background-position: -540px 0; } div.alphaSelect a.s:hover { background-position: -540px -48px; } div.alphaSelect a.s span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -540px -24px; } div.alphaSelect a.t { background-position: -570px 0; } div.alphaSelect a.t:hover { background-position: -570px -48px; } div.alphaSelect a.t span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -570px -24px; } div.alphaSelect a.u { background-position: -600px 0; } div.alphaSelect a.u:hover { background-position: -600px -48px; } div.alphaSelect a.u span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -600px -24px; } div.alphaSelect a.v { background-position: -630px 0; } div.alphaSelect a.v:hover { background-position: -630px -48px; } div.alphaSelect a.v span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -630px -24px; } div.alphaSelect a.w { background-position: -660px 0; } div.alphaSelect a.w:hover { background-position: -660px -48px; } div.alphaSelect a.w span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -660px -24px; } div.alphaSelect a.x { background-position: -690px 0; } div.alphaSelect a.x:hover { background-position: -690px -48px; } div.alphaSelect a.x span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -690px -24px; } div.alphaSelect a.y { background-position: -720px 0; } div.alphaSelect a.y:hover { background-position: -720px -48px; } div.alphaSelect a.y span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -720px -24px; } div.alphaSelect a.z { background-position: -750px 0; } div.alphaSelect a.z:hover { background-position: -750px -48px; } div.alphaSelect a.z span.onPage { background: url(/templates/jsp/_style2/_achs/images/alphabet.gif) -750px -24px; } /* === START OF SEARCH PAGE STYLES === */ body.search #content-wrap { width: 1000px; } body.search #content { width: 995px; } body.search #contentMain { width: 995px; } body.search h2 { margin: 3px 3px 10px 3px; padding: 4px 7px; background: #d8e4ee url(/templates/jsp/_style2/_achs/images/h2-bg.gif) repeat-x; line-height: normal; } #criteria { float: left; width: 323px; margin: 0; border: 1px solid #d8e5ee; background: #d8e5ee; } .searchInterface { /* atypon change - rename */ float: left; width: 323px; padding: 0 0 15px; background: #fff; font-size: .75em; display: inline; /* EXPLORER SUCKS BIGTIME */ } .searchInterface h4 {/* atypon change - rename */ margin: 15px 7px 0 7px; font-size: 1.1em; color: #333; } .searchInterface h5 {/* atypon change - rename */ width: 307px; margin: 20px 0 4px; font-size: 1.1em; color: #444; border-bottom: 1px solid #ccc; } .searchInterface a {/* atypon change - rename */ text-decoration: none; } .searchInterface a:hover {/* atypon change - rename */ text-decoration: underline; } .searchInterface hr {/* atypon change - rename */ clear: both; display: block; height: 1px; margin: 7px 0 10px; background: #bbc5df; border: 0; } .searchInterface div, .searchInterface span {/* atypon change - rename */ margin: 0 7px; line-height: normal; } .searchInterface .filters a {/* atypon change - rename */ font-size: .9em; } .searchInterface span, .searchTip span {/* atypon change - rename */ margin: 0; color: #500; } .searchInterface p {/* atypon change - rename */ margin: 15px 7px 15px 7px; line-height: normal; } .searchInterface ul {/* atypon change - rename */ margin: 0 7px 15px 7px; padding: 0; list-style: none; } .searchInterface ul li {/* atypon change - rename */ margin: 0 0 2px; line-height: normal; } .searchInterface ul.filters {/* atypon change - rename */ margin-bottom: 7px; } .searchInterface ul.filters li {/* atypon change - rename */ color: #500; } .searchInterface ul.filters strong {/* atypon change - rename */ color: #000; font-weight: normal; } #advSearch { float: left; margin: 15px 0 20px 7px; display: inline; /* EXPLORER SUCKS BIGTIME */ } #advSearch div { margin: 10px 0 0 2px; } #advSearch .full { width: 303px; } #stemOption label { margin: 0 7px 0 0; } #advSearch #journalFilter, #advSearch #journalFilter2, #advSearch #dateFilter { margin-top: 0; } #journalFilter p { margin: 0; padding: 3px 0 0; } #journalFilter ul { width: 303px; margin: 10px 0 0; padding: 0; } #journalFilter ul li { width: 288px; margin: 0 0 2px 14px; padding: 0; color: #666; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } .searchInterface div.button { float: right; margin: 5px 7px 5px 0 !important; } #jFilterInterface { position: absolute; top: 330px; left: 255px; float: left; width: 560px; padding: 10px 0; border: 1px solid #333; background: #e0e8f1; z-index: 6000; } #jFilterInterface a.close { float: right; width: auto; height: 15px; margin: 0 7px; padding: 0 20px 0 0; background: url(/templates/jsp/_style2/_achs/images/select-x.gif) no-repeat right top; text-decoration: none; } #jFilterInterface a.close:hover { text-decoration: underline; } #jFilterInterface h4 { margin: 0 0 0 10px; } #jFilterInterface p { margin: 0 0 7px 10px; font-size: .875em; } #jFilterInterface div.buttons { float: none; display: block; width: 100%; margin: 0 0 10px; } #jFilterInterface #save { margin: 0 20px 0 10px; } #jFilterInterface div.buttons a, #jFilterInterface div.buttons a:visited { color: #369; } #jFilterInterface div { float: left; width: 265px; margin: 0 0 0 7px; } #jFilterInterface label { display: block; } #advSearch label { font-size: .95em; } #jlist { width: 305px; } #dateFilter { float: right; } #dateFilter div { clear: right; margin: 0 0 7px; } #dateFilter input { margin-right: 0; } #dateFilter label { margin: 0 10px 0 0; } #dateFilter select { float: right; width: 100px; margin: 0 7px 7px 3px; } #dateFilter span { float: right; margin: 2px 7px 7px 0; color: #000; } #advSearchSub { float: right; } #advSearchSub span { position: relative; top: -5px; margin-right: 15px; } #advSearchSub input { margin: 0 7px 0 0; } #saveSearchBox { position: relative; clear: both; height: 1%; /* for IE */ margin-top: 20px; padding: 7px 7px 27px 7px; background: #eef6fc; border: 1px solid #b2beda; } #saveSearchBox #saveSearchA { margin: -5px 0 5px 0; } #saveSearchBox #saveSearchB { margin: 0; } #saveSearchBox a.close { position: absolute; top: 2px; right: 2px; display: block; width: 100px; min-height: 15px; padding: 0 20px 0 0; background: url(/templates/jsp/_style2/_achs/images/select-x.gif) no-repeat top right; font: .9em Arial, Helvetica, sans-serif; text-align: right; text-decoration: none; } #saveSearchBox h3 { margin: 0 0 7px 0; font-size: 1.2em; color: #304e96; } .searchInterface #saveSearchBox div {/* atypon change - rename */ margin: 0; } #saveSearchBox #saveSearchB div { margin: 5px 0 10px 0; } #saveSearchBox #searchName { margin: 6px 5px 0 0; font-size: .9em; } #saveSearchBox #saveSearchB select { margin: 4px 0 10px 0; } #saveit { position: relative; top: 5px; } #finalize { position: absolute; right: 5px; bottom: 7px; } #saveSearchBox #viewSaved { position: absolute; text-align: right; bottom: 2px; right: 7px; } body.search .findCitation { clear: left; padding: 7px 0 1px 0; background: #6982ba; } body.search .findCitation h3 { margin: 0 0 0 14px; padding: 0; background: transparent; } body.search .findCitation select { display: block; width: auto; margin: 7px 0 0 0; } body.search #citationJump div { margin: 0 14px 7px 14px; } body.search #citationJump #citJmpVol { margin-top: 7px; } .searchInterface .fuzzyName {/* atypon change - rename */ text-align: right; } .searchInterface .fuzzyName div {/* atypon change - rename */ margin: 0 7px 0 0; } #results, #guide { position: relative; clear: none; float: right; width: 655px; margin: 0 5px 0 0; border: 1px solid #d8e5ee; background: #fff; display: inline; /* EXPLORER SUCKS BIGTIME */ } #results h2.heading, #guide h2.heading { float: left; margin: 0 0 10px 0; background: transparent; } #resultsHead, #guideHead { position: relative; width: 652px; height: 29px; margin: 3px 0 0 3px; background: #d8e4ee url(/templates/jsp/_style2/_achs/images/h2-bg.gif) repeat-x; } #guideHead { width: 650px; } #relevanceBox { float: right; height: 29px; margin: 1px 0 0; padding: 0; background: url(/templates/jsp/_style2/_achs/images/relevanceBox.gif) no-repeat right top; font-size: .7em; } #relevanceBox span { float: left; margin: 4px 7px 0 3px; } #relBoxLeft { float: left; width: 7px; height: 29px; background: url(/templates/jsp/_style2/_achs/images/relevanceBoxLeft.gif) no-repeat; } #relevanceBox select { float: left; height: 17px; margin: 4px 10px 0 0; } #relevanceBox select { font-size: 1em; } .resultInfo { clear: both; float: left; width: 100%; margin: 15px 0 10px; text-align: center; } .showing { float: left; margin: 1px 0 0 13px; font-size: .75em; } .perPage { float: right; margin: 1px 7px 0 0; font-size: .75em; } .resultsNav { clear: both; } .resultsNav span { font-size: .75em; } .resultsNav a { margin: 0; padding: 0 4px; border: 1px solid #fff; font-size: .75em; text-decoration: none; } .resultsNav a:hover { border-color: #369; } body.search #textArea { width: 100%; border: 0; } body.search #textArea h3 { font-size: 1.2em; color: #369; } body.search #articleArea { width: 100%; border: 0; font-size: .875em; } body.search .articleListHeader, body.search .articleListFooter { clear: both; width: 616px; margin: 0 0 10px 11px; } .articleBox .snippet { clear: both; float: left; margin: 7px 0 0; color: #666; line-height: normal; } .articleBox .snippet, .articleBox .snippet * { font-size: 11px !important; } .articleBox .snippet p { margin: 0 0 7px !important; } ul.tabs { clear: both; float: left; height: 25px; width: 645px; margin: 7px 0 0 0; padding: 0 0 0 10px; background: url(/templates/jsp/_style2/_achs/images/tabs-bglayer.gif) repeat-x; display: inline; /* EXPLORER SUCKS BIGTIME */ } #criteria ul.tabs { width: 313px; } ul.tabs li { float: left; width: auto; height: 25px; margin: 0 0 0 2px; list-style: none; display: inline; /* EXPLORER SUCKS BIGTIME */ } ul.tabs li a { float: left; width: auto; height: 25px; background: transparent url(/templates/jsp/_style2/_achs/images/tabLeft.gif); text-decoration: none; display: inline; /* EXPLORER SUCKS BIGTIME */ } ul.tabs li a span { float: left; height: 21px; margin: 0; padding: 4px 7px 0 7px; font-size: .75em; background: transparent url(/templates/jsp/_style2/_achs/images/tabRight.gif) no-repeat top right; display: inline; /* EXPLORER SUCKS BIGTIME */ } #criteria ul.tabs li a span { background: transparent url(/templates/jsp/_style2/_achs/images/tabRight-blue.gif) no-repeat top right; } ul.tabs li.nowShowing a { background-position: 0 -50px; } ul.tabs li.nowShowing a span, #criteria ul.tabs li.nowShowing a span { background-position: right -50px; } ul.tabs li a:hover { background-position: 0 -25px; cursor: pointer; } ul.tabs li a:hover span, #criteria ul.tabs li a:hover span { background-position: right -25px; } .genPageBox { clear: both; margin: 0 10px 15px; padding: 0 0 7px 10px; border: 1px solid #bfd3e3; background: #fff url(/templates/jsp/_style2/_achs/images/gradient.gif) repeat-x; font-size: .875em; } .genPageBox h2 { margin: 5px 0 0 10px !important; padding: 0 !important; background: transparent !important; } .genPageBox h2 a { color: #35659a; text-decoration: none; } .genPageBox h3 { margin: 0 0 0 10px !important; font-style: italic !important; font-weight: normal !important; font-size: 1em !important; color: #000 !important; } .genPageBox h2 a:hover { text-decoration: underline; } .genPageBox div { margin: 5px 0 0 10px; } .genPageBox div span { font-style: italic; } .genPageBox .snippet { float: none; } #searchTipsLink { float: right; margin: 5px 8px 0 0; font-size: .7em; } #searchTipsLayer { position: absolute; right: 0; top: 0; width: 635px; height: 100%; padding: 7px 10px; background: #d8e3ed; z-index: 5000; } #searchTipsLayer h1 { font-size: 1.2em; margin-bottom: 1em; } #searchTipsLayer h1, #searchTipsLayer h3 { color: #000; } #searchTipsLayer p, #searchTipsLayer li { font-size: .8em; } #searchTipsLayer .button { float: right; width: 10em; margin: 5px 0 15px; text-align: center; font-size: .8em; } #searchTipsLayer h1 { clear: left; } /* === END OF SEARCH PAGE STYLES === */ /* === START OF ISSUE LIST STYLES === */ #issueList { margin: 15px 0 0; } ul.preIssue, ul.volumes { display: block; list-style: none; margin: 0 0 20px; padding: 0 !important; } ul.preIssue a, ul.preIssue a:visited { font-size: .9em; text-decoration: none; color: #369; } ul.volumes { margin: 10px 0 0; } ul.volumes ul { display: block; margin: 5px 0 0; padding: 0 0 10px 30px; } ul.volumes ul li { font-size: .9em; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } ul.volumes ul li img { vertical-align: middle; padding-bottom: 2px; } ul.volumes a, ul.volumes a:visited { text-decoration: none; font-weight: bold; color: #369; } #issueList a:hover { color: #500; } ul.volumes ul a, ul.volumes ul a:visited { font-weight: normal; } ul.volumes .plusMinus { float: left; width: 13px; height: 13px; margin: 2px 5px 0 0; background: url(/templates/jsp/_style2/_achs/images/plusMinus.gif) no-repeat; overflow: hidden; } ul.volumes .minus { background-position: 0 -13px; } ul.volumes .special { font-size: .9em; color: #555; } /* === END OF ISSUE LIST STYLES === */ /* === START OF COVER ART GALLERY STYLES === */ #volumeNav { position: absolute; top: 2px; right: 0; width: 220px; height: 29px; background: url(/templates/jsp/_style2/_achs/images/volumeNav.gif) no-repeat 0 -58px; } #volumeNav a { position: absolute; display: block; height: 29px; margin: 0; background: url(/templates/jsp/_style2/_achs/images/volumeNav.gif) no-repeat; } #volumeNav .previous { left: 0; width: 115px; background-position: 0 0; } #volumeNav .next { left: 115px; width: 96px; background-position: -115px 0; } #volumeNav .previous:hover { background-position: 0 -29px; } #volumeNav .next:hover { background-position: -115px -29px; } #volumeNav a span { margin-left: -5000px; } ul#coverVol { position: relative; width: 164px; margin: 10px 0 30px 21px; padding: 0 0 12px; z-index: 1; /* strange, but necessary */ } ul#coverVol li { position: absolute; display: block; margin: 0; padding: 0; } ul#coverVol a.volIMG { display: block; width: 164px; height: 20px; background: url(/templates/jsp/_style2/_achs/images/pulldown-volume.gif) no-repeat; } ul#coverVol li ul { position: absolute; display: block; width: 162px; margin: 0; padding: 0; border-left: 1px solid #dacfbd; border-right: 1px solid #dacfbd; list-style: none; background: #e9edf4; } ul#coverVol li ul li { position: static; display: block; width: 100%; margin: 0; padding: 0; border-bottom: 1px solid #dacfbd; } ul#coverVol li ul li a, ul#coverVol li ul li a:visited { display: block; width: 162px; background: transparent; color: #021351; text-decoration: none; font-size: .8em; } ul#coverVol li ul li a:hover { background: #fff; cursor: pointer; } ul#coverVol li ul li a span { display: block; width: 156px; margin: 0 2px 0 4px; } #coverArea .footer { clear: both; } .coverNav { margin: 0 0 15px; text-align: center; } .coverNav .showing { float: none; margin: 0 10px 0 0; font-size: .9em; } .coverNav * { font-size: .9em; } .coverNav a { margin: 0 7px; } body.coverArt h4, body.coverArt h5 { margin: 0; padding: 0; font: .8em "Trebuchet MS", Arial, Helvetica, sans-serif; color: #444; } .coverArtBox { clear: none; float: left; width: 159px; margin: 0 0 30px; text-align: center; white-space: nowrap; height: 270px; /* Atypon: floats do not work correctly without height set */ display: inline; /* EXPLORER SUCKS BIGTIME */ } .coverArtBox div { font-size: .8em; } .coverArtBox img { margin: 5px 0; border: 1px solid #666; } .theCover { float: right; margin: 0 10px 0 10px; } .theCover img { border: 1px solid #ccc; } .coverDescription h2 { padding-top: 0 !important; background: transparent !important; font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; color: #333; } .coverDescription h3 { margin-bottom: 3px; color: #000 !important; } .coverDescription ul { margin: 0; padding: 0 0 0 25px !important; } .coverDescription li { font-size: .9em; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } .largeCoverCaption { margin: 0 10px; font-size: .875em; line-height: 1.6em; } #textArea .largeCoverCaption p { font-size: 1em; margin-left: 0; } /* === END OF COVER ART GALLERY STYLES === */ /* === START OF ONLINE NEWS STYLES === */ body.newsStory #articleBody { margin: 20px 0 15px; } body.newsIndex #textArea { float: left; padding-bottom: 10px; } #onlineNewsNav { position: absolute; top: 2px; right: 0; width: 220px; height: 29px; } #onlineNewsNav a { position: absolute; height: 29px; background: url(/templates/jsp/_style2/_achs/images/onlineNewsNav.gif); } #onlineNewsNav .newsLatest { left: 0; width: 80px; background-position: 0 0; } #onlineNewsNav .newsArchive { left: 80px; width: 55px; background-position: -80px 0; } #onlineNewsNav .newsRSS { left: 135px; width: 85px; background-position: -135px 0; } #onlineNewsNav .newsLatest:hover { background-position: 0 -29px; } #onlineNewsNav .newsArchive:hover { background-position: -80px -29px; } #onlineNewsNav .newsRSS:hover { background-position: -135px -29px; } #onlineNewsNav span { margin-left: -5000px; } body.newsIndex #sideCol { width: 210px; margin-right: 7px; display: inline; /* EXPLORER SUCKS BIGTIME */ } #newsIndexContent { float: left; width: 563px; margin: 0 0 0 7px; border: 1px solid #b6b6e1; display: inline; /* EXPLORER SUCKS BIGTIME */ } #featuredItem { margin: 0 0 15px; padding: 7px; background: #f2fced; } #newsIndexContent h4 { margin: 0; padding: 0; font-size: .75em; font-weight: normal; } #newsIndexContent h3 { margin: 0 0 5px; padding: 0; font-size: .95em; } #newsIndexContent h2 { margin: 0 0 7px; padding: 0; } #newsIndexContent p { margin: 0; padding: 0; font-size: .8em; line-height: normal; } #featuredItem p { text-align: justify; } img#featuredImage { float: right; margin: 0 0 0 15px; } #mostRecentItems { clear: both; float: left; width: 347px; margin: 0 0 0 7px; padding-bottom: 10px; } #mostRecentItems .newsItem { float: left; width: 100%; margin: 0 0 25px; } img.newsImage { float: left; margin: 0 7px 0 0; } #archiveList { float: right; width: 180px; margin: 0 7px 0 0; padding-left: 7px; border-left: 1px solid #a3cdb7; } #archiveList ul { margin: 0 0 15px; padding: 0; } #archiveList ul li { margin: 0 0 5px 15px; padding: 0; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); font-size: .8em; } #archiveList ul li a { text-decoration: none; } #archiveList ul li a:hover { text-decoration: underline; } #textArea #sideCol p { font-size: 1em; margin: 0 0 7px; } body.newsIndex #sideCol .sideColBox ul li { margin-bottom: 7px; } body.newsIndex #sideCol .sideColBox ul li a { text-decoration: none; } body.newsIndex #sideCol .sideColBox ul li a:hover { text-decoration: underline; } body.newsIndex h1 { margin-bottom: 3px; font-size: 1em; } #browseMonth { float: left; margin: 5px 0 30px 10px; display: inline; /* EXPLORER SUCKS BIGTIME */ } #browseMonth a { float: left; margin: 0 5px 0 0; padding: 0 2px; border: 1px solid #369; background: #d8e5ee; font-size: .7em; line-height: 1.4em; text-decoration: none; display: inline; /* EXPLORER SUCKS BIGTIME */ } #browseMonth a:hover { background: #369; color: #fff; } #archiveItems .newsItem { clear: both; float: left; width: 773px; margin: 0 10px 15px; padding: 0 0 7px; border: 1px solid #bfd3e3; background: #fff url(/templates/jsp/_style2/_achs/images/gradient.gif) repeat-x; font-size: .875em; } #archiveItems .newsItem .newsImage { float: left; margin: 7px 7px 0 10px; border: 1px solid #ccc; } #archiveItems .newsItem h4 { margin: 7px 0 0 0 10px; font-size: .875em; } #archiveItems .newsItem h2 { margin: 0 0 0 10px; padding: 0; font-size: 1.1em; } #archiveItems .newsItem h2 a { color: #35659a; text-decoration: none; } #archiveItems .newsItem h2 a:hover { text-decoration: underline; } #archiveItems .newsItem p { font-size: .9em; margin: 3px 10px 0; line-height: normal; } #articleContent #articleBody h2.newsRelatedHead { display: block; width: auto; margin-top: 30px; background: #666; color: #fff; padding: 2px 0 2px 7px; } ul.newsRelated { margin: 7px 0 0; padding: 0; } ul.newsRelated li { margin: 0 0 7px 17px; padding: 0; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); font-size: 1.1em; } /* === END OF ONLINE NEWS STYLES === */ /* === START OF RSS ALERT PAGE STYLES === */ #feedList { float: left; } div.listCol { float: left; } #content ul.rssList { margin: 5px 20px 30px 10px; padding: 0; list-style: none; } #content ul.rssList li { margin: 0 0 5px; padding: 0; } ul.rssList li a { display: block; margin: 0 0 10px; padding: 0 0 0 20px; text-decoration: none; font-size: .875em; background: url(/templates/jsp/_style2/_achs/images/rss.png) no-repeat; } ul.rssList li a:hover { text-decoration: underline; } #aboutRSS { float: right; width: 220px; margin: 0 5px 0 0; background: #eee; font-size: .9em; } #aboutRSS ul { border: 0; padding: 0; } #aboutRSS ul li { margin: 0 0 3px 17px; padding: 0; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } #aboutRSS h2 { margin: 0; padding: 7px 10px; background: #369; color: #fff; } #aboutRSS h3 { color: #000; } /* === END OF RSS ALERT PAGE STYLES === */ /* === START OF CITATION DOWNLOAD STYLES === */ #downloadCitation { margin: -10px 0 0 10px; } #downloadCitation h2 { font-size: .9em !important; color: #000 !important; } #downloadCitation label { display: block; margin: 0 0 0 30px; font-size: .875em; } #downloadCitation select { margin: 0 0 0 30px; } label#quickImport { margin: 20px 0 0 10px; } #downloadCitation #submit { margin: 15px 0 15px 10px; } #downloadCitList li { margin-bottom: 7px; font: .875em Arial, Helvetica, sans-serif; } #downloadCitList h4 { margin: 0 !important; padding: 0 !important; font: bold 1em Arial, Helvetica, sans-serif !important; } /* === END OF CITATION DOWNLOAD STYLES === */ /* === START OF EMAIL A COLLEAGUE STYLES === */ #emailLink p { margin: 0 0 5px 10px; } #emailLink h5 { margin: 0 0 30px 40px; } #emailLink div { clear: left; margin: 0 0 10px 20px; font-size: .875em; } #emailLink div span { float: left; width: 10em; margin: 0 10px 0 0; text-align: right; } #emailLink label { display: block; margin: 15px 0 0 30px; } #emailLink label * { float: none !important; vertical-align: middle; } #emailLink #submit { margin: 0 0 30px 30px; } /* === END OF EMAIL A COLLEAGUE STYLES === */ /* === START OF ARRC/LRC STYLES === */ #arrcLogo, #lrcLogo { margin: 15px 0 15px 15px; } body.arrc #content-wrap, body.lrc #content-wrap { width: 685px; } body.arrc #content, body.arrc #contentMain, body.lrc #content, body.lrc #contentMain { width: 680px; } body.arrc #textArea, body.lrc #textArea { width: 678px; min-height: 32em; } body.arrc #rightColumn, body.lrc #rightColumn { width: 300px; } #arrcJournalInfo * { font-size: 1em; color: #000; } #arrcJournalInfo select { width: 245px; } #arrcJournalInfo input { position: relative; top: 4px; left: 5px; } body.arrc h3, body.lrc h3 { margin: 0 0 10px; line-height: normal; } body.arrc #content ul, body.lrc #content ul { margin: 0 0 1em; padding: 0; } body.arrc #content ul li, body.lrc #content ul li { margin: 0 0 2px 25px; padding: 0; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } .arrcHPBox, .lrcHPBox { position: relative; clear: both; float: left; width: 100%; margin: 0 0 12px; padding: 0 0 15px; background: #fff; border-bottom: 1px solid #b6b6e1; } .arrcHPBox .leftCol, .lrcHPBox .leftCol { float: left; width: 325px; display: inline; /* EXPLORER SUCKS BIGTIME */ } .arrcHPBox .rightCol, .lrcHPBox .rightCol { float: right; width: 325px; } .leftBorder { padding-left: 15px; border-left: 1px solid #ccc; } body.arrc #textArea .arrcHPBox h2, body.lrc #textArea .lrcHPBox h2 { margin: 7px 7px 7px 10px; padding: 0; } body.arrc .arrcHPBox h3, body.lrc .lrcHPBox h3 { margin: 3px 7px; font-size: .8em; color: #000; } body.arrc .arrcHPBox p, body.lrc .lrcHPBox p { margin: 2px 7px; font-size: .8em; line-height: normal; } body.arrc .arrcHPBox ul.padBottom40, body.lrc .lrcHPBox ul.padBottom40 { padding-bottom: 40px !important; } body.arrc .arrcHPBox li, body.lrc .lrcHPBox li { font-size: .8em; } .arrcHPBox img#ACSphoenix, .lrcHPBox img#ACSphoenix { position: absolute; top: 2.8em; right: 50px; } .arrcHPBox img#coExcellence, .lrcHPBox img#coExcellence { position: absolute; bottom: 10px; right: 50px; } .arrcHPBox img.cover, .lrcHPBox img.cover { float: left; margin: 5px 10px 7px 7px; border: 1px solid #ccc; } .arrcHPBox .featured, .lrcHPBox .featured { position: relative; width: 325px; height: 176px; margin: 7px 0 0 10px; } .featured * { line-height: normal; } #who { position: absolute; top: 10px; right: 7px; width: 155px; background: #2f6a96; } #who h1, #who h2 { margin: 7px 3px 3px 7px !important; font-size: .75em; font-weight: normal; color: #fff; } #who h2 { margin: 0 3px 0 7px; } #who img { margin: 7px 3px; } #libSignIn { position: relative; display: block; margin: 15px 0 0; padding: 0; height: 1%; } #libSignIn label { display: block; margin: 0 0 7px; } #libSignIn label span { float: left; width: 5em; margin: 5px 7px 0 0; text-align: right; } #libSignIn label input { width: 125px; margin: 0 56px 0 0; color: #000; font-size: .9em; } #libSignIn .signIn { position: absolute; bottom: 6px; right: 0; color: #000; font-size: .9em; } body.lrc a#livewire { display: block; margin: 0 0 10px; } body.lrc a#livewireSignup { float: right; margin: 7px 7px 10px; font-size: .7em; } body.lrc div.clear { clear: both; margin: 0 0 0 7px; padding: 10px 0 0; font-size: .9em; } #newsletterHead { padding: 0 0 7px; background: #f3f7fa; border-bottom: 1px solid #ccc; } #newsletterHead h2 { margin: 0 0 0 7px; padding: 7px 0 0; font-size: .8em; color: #000; } #newsletterLogo, #lwlogo { float: left; margin: 7px 7px 0; } .newsletterRSS { margin: 7px 0 12px; } #newsletterHome { clear: both; } #newsletterHome h2 a { text-decoration: none; } #newsletterHome h2 a:hover { text-decoration: underline; } #newsletterFeature { clear: both; margin: 0; padding: 0 0 10px; border-bottom: 2px solid #e3e3e3; background: #f8f8f8; } #newsletterFeature h4 { margin: 0 0 0 10px; padding-top: 10px; color: #666; font-size: .8em; font-weight: normal; } #newsletterFeature h2 { margin: 0 0 0 10px; padding: 0; } #newsletterFeature p { margin: 5px 0 0 10px !important; font-size: .8em; } #newsletterFeature #featureImage { float: left; margin: 10px 10px 0; } .newsSection { clear: left; margin: 25px 10px 10px; } .newsSection h3 { display: block; margin: 0 0 10px !important; padding: 0 0 3px !important; border-bottom: 1px solid #369; font: bold 1em Arial, Helvetica, sans-serif; color: #00497e; } .newsSection .story { clear: left; float: left; width: 95%; margin: 0 10px 25px 0; } .newsSection h2 { margin: 0 !important; padding: 0 !important; } .newsSection p { margin: 0 !important; } .newsSection img.storyImage { float: left; margin: 0 7px 0 0; border: 1px solid #ccc; } #newsletterStory { float: left; width: 430px; padding: 0 0 7px; margin: 7px 0 0 10px; } #newsletterStory h1 { margin: 10px 0 0; padding: 0 0 10px; border-bottom: 1px solid #c4d6e2; font: bold 1.1em Arial, Helvetica, sans-serif; } #newsletterStory p { margin: 10px 0 0; } #newsletterBriefs, #relatedTitles { float: right; width: 200px; margin: 17px 7px 0 0; border: 1px solid #b6b6e1; } #relatedTitles { width: 300px; margin-top: 0; } #newsletterBriefs h3, #relatedTitles h3 { margin: 2px; padding: 3px 7px; background: #e1ecf2; color: #01487e; } #newsletterBriefs h4 { margin-top: 15px; color: #01487e; font-size: .8em; } #newsletterBriefs ul, #relatedTitles ul { margin-bottom: 7px !important; font-size: .875em; } #relatedTitles ul { margin-left: 0 !important; padding-left: 20px; } #relatedTitles li { margin: 0 0 2px 0; padding: 0; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } /* === END OF ARRC/LRC STYLES === */ /* === START OF LIBRARIAN ADMIN STYLES === */ body.admin #textArea { min-height: 22em; } body.admin #textArea h4 { margin: 10px 10px 0; padding: 0; } body.admin #content ul { margin-bottom: 10px; } #libAdminLogo { margin: 15px 0 15px 0; } .instLogo { float: right; margin: 3px 0 40px 0; } .instLogo img { padding: 5px; background: #fff; border: 1px solid #ccc; } .dashItem { clear: both; margin: 0 0 30px; } .dashItem img { float: left; margin: 0 10px; } #accountSelect { float: right; margin: 4px 7px 0; padding: 0; text-align: right; } #accountSelect span { font-weight: bold; font-size: .8em; } #accountSelect form { font-size: .9em; } table#journalSubs { width: 605px; margin: 10px auto 20px; padding: 0; font: .8em Arial, Helvetica, sans-serif; border: 1px solid #ccc; border-bottom: 0; } table#journalSubs th .jTitle, table#journalSubs th .expiration { font-weight: bold; } table#journalSubs th, table#journalSubs td { padding: 5px; border-bottom: 1px solid #ccc; } table#journalSubs .jTitle { width: 425px; } table#journalSubs .expiration { width: 160px; text-align: right; } #content ul#holdings { margin: 0 0 20px 20px; } #textArea .tokenNotice { float: left; margin: 0 0 7px 10px; padding: 3px; background: #eee; border: 1px solid #ccc; font: .875em Arial, Helvetica, sans-serif; color: #29754e; display: inline; /* EXPLORER SUCKS BIGTIME */ } #tokenEntry { clear: left; margin: 0 0 10px 0; } #tokenEntry input { margin-left: 10px; } body.admin #content ul.reportTypes { margin: 0 10px 20px 20px; } table#reports { width: 655px; margin: 15px auto 30px; border: 1px solid #ccc; font-size: .875em; } table#reports td, table#reports th { padding: 3px 0; padding: 5px; } table#reports th { border-bottom: 1px solid #ccc; } table#reports .check { width: 30px; text-align: center; } table#reports .desc { width: 330px; } #usageReports label { margin: 0 0 0 10px; font-size: .875em; } #usageReports label * { vertical-align: middle; } #usageReports div { margin: 0 0 10px 20px; } #usageReports label { margin-left: 30px; } #usageReports #reqReport { margin-left: 30px; } body.admin div.error, body.user div.error { margin: 0 10px; padding: 0; background: #eee; border: 1px solid #500; font-size: .875em; } body.user div.error { margin: 0 10px 15px; } .error * { color: #500 !important; font-family: Arial, Helvetica, sans-serif !important; } .success { margin: 0 10px; background: #eee; border: 1px solid #29754e; font-size: .875em; } .success * { color: #29754e; } body.admin div.error h2, body.user div.error h2, body.user div.success h2 { margin-top: 7px !important; } table#ipTable { width: 90%; margin: 7px 0 15px 0; padding: 0; font: .9em Arial, Helvetica, sans-serif; } table#ipTable th, table#ipTable td { padding: 0 10px 10px 30px; vertical-align: top; } #textArea .emailNotice { float: left; margin: 15px 0 7px 10px; padding: 3px; background: #eee; border: 1px solid #ccc; font: .875em Arial, Helvetica, sans-serif; color: #29754e; display: inline; /* EXPLORER SUCKS BIGTIME */ } #usageReports .emailNotice{ float:none; } form#shibboleth { margin: 20px 0; } form#shibboleth input { margin: 0 0 10px 10px; } form#shibboleth h5 { margin-top: 15px; font-weight: normal; } form#cobrandMessage { margin: 0 0 30px 0; } form#cobrandMessage div { margin: 0 0 0 7px; font: italic .8em Arial, Helvetica, sans-serif; } form#cobrandMessage #cobrandText { width: 90%; margin: 0 0 10px 7px; } form#cobrandMessage input { margin-left: 7px; } form#cobrandLogo { margin: 0 0 10px 0; } form#cobrandLogo #submit { margin: 15px 0 10px 10px; } form#linkServer div { margin: 10px 0 30px 10px; } form#linkServer span { font-size: .875em; } form#linkServer div div { margin: 0 0 15px; } form#linkServer div.imgUpload, form#cobrandLogo div.imgUpload { margin: 15px 0 0 30px; } div.imgUpload * { vertical-align: middle; font-size: .875em; } div.imgUpload .instLogo { float: none; margin: 0; } #textLink, #imgLink { margin: 0 2px 0 10px; } #openURLimg img { margin: 0 0 0 15px; vertical-align: middle; } table#admins { margin: 7px 10px 25px; padding: 0; font-size: .875em; border: 1px solid #ccc; border-bottom: 0; } table#admins td { padding: 3px; border-bottom: 1px solid #ccc; } table#admins .name, table#admins .email { width: 290px; } form#addAdmin .emailNotice { margin: 0 10px 7px; } form#addAdmin div { clear: left; margin: 7px 10px 15px; font-size: .875em; } /* === END OF LIBRARIAN ADMIN STYLES === */ /* === START OF PROFILE TEMPLATE STYLES === */ body.register #content-wrap { width: 100%; } #signInContent { float: left; width: 968px; min-height: 360px; margin: 0 5px; padding: 10px; background: #fff; border: 1px solid #9eb7cb; display: inline; /* EXPLORER SUCKS BIGTIME */ } #signInContent .right { float: right; width: 310px; margin: 0 0 0 40px; border: 1px solid #000; font-size: .8em; display: inline; /* EXPLORER SUCKS BIGTIME */ } form#signInBox { float: left; width: 100%; display: inline; /* EXPLORER SUCKS BIGTIME */ } form#signInBox #signInHead { height: 50px; margin: 0 0 15px; padding: 5px 0; border-bottom: 1px solid #000; } form#signInBox #acsLogo { float: right; margin: 0pt 45px 0pt 0pt; } form#signInBox h1 { float: right; margin: 0 10px; line-height: 50px; } form#signInBox label { float: left; width: 100%; margin: 10px 0 0; display: inline; /* EXPLORER SUCKS BIGTIME */ } form#signInBox label span { float: left; width: 6em; margin: 0 7px; font-weight: bold; text-align: right; display: inline; /* EXPLORER SUCKS BIGTIME */ } form#signInBox .error { float: left; margin: 7px 20px 0; color: #500 !important; font-family: Arial, Helvetica, sans-serif !important; } form#signInBox #actions { float: left; width: 100%; margin: 15px 0 0; text-align: center; } form#signInBox #acsID, form#signInBox #password { width: 150px; margin: 0; } form#signInBox #submit { margin-right: 15px; } ul#signInLinks { float: right; margin: 10px 0 5px; padding: 0; text-align: right; } ul#signInLinks li { margin: 0 7px 0 0; padding: 0; list-style: none !important; } #signInContent .aboutID { margin: 25px 0 0; } #signInContent ul { margin: 5px 0 10px 10px; padding: 0; } #signInContent ul li { margin: 0 7px 0 17px; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); font-size: .875em; } #signInContent p { font-size: .875em; } /* === END OF PROFILE REGISTRATION STYLES === */ /* === START OF PROFILE STYLES === */ body.user h1 { margin: 15px 0 20px 10px !important; font-size: 1.1em; } #registerAlerts h3 { clear: left; margin: 10px 0 0 10px; } #registerAlerts ul.jList { display: block; margin: 0 0 25px 10px; padding: 0; list-style: none; } #registerAlerts div { margin: 0 0 15px 10px; } #registerAlerts span { font-size: .875em; } #registerAlerts div.type { margin: 7px 30px 25px 50px; } #registerAlerts div.type div { display: inline; margin: 7px 0 0 7px; } #registerAlerts div.type input { margin-right: 0; } #registerAlerts div.type label { margin-right: 20px; } #registerAlerts #submit { clear: both; float: left; margin: 20px 0 15px 10px; } form#citAlertArticles, form#favArticles { padding-bottom: 20px; } div.savedSearch { position: relative; float: left; width: 805px; margin: 0 10px 15px; padding: 0 0 7px; background: #ffffe4; border: 1px solid #ccc; } div.savedSearch h5 { width: 490px; margin: 7px 0 10px; padding: 0; } div.savedSearch .buttons { position: absolute; top: 0; right: 0; } div.savedSearch a.button { float: right; margin: 7px 5px 0 0; padding: 1px 2px 0; border: 1px solid #369; font-size: .875em; line-height: 1.4em; text-decoration: none; } div.savedSearch a img { float: right; margin: 7px 10px 0 0; } div.savedSearch a.button:hover { background: #369; color: #fff; } div.savedSearch div { margin: 0 0 0 10px; font-size: .875em; } form#articleSort { margin: 0 0 20px 10px; font-size: .8em; } body.user .articleBox { font-size: .875em; } body.user #textArea .articleBox h2 { margin: 0; } .articleOptions a.removeArticle { width: 93px; height: 18px; background: url(/templates/jsp/_style2/_achs/images/removeArticle.png); } .articleOptions a.removeFavorites { width: 130px; height: 18px; background: url(/templates/jsp/_style2/_achs/images/removeFav.png); } /* -- Cart styles -- */ #purchasePage { margin: 0 70px; } #purchasePage h1 { color: #000; } #progressBar { width: 100%; margin: 0; padding: 0; text-align: center; } #purchasePage ul li { list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } #cartItems { margin-top: 30px; } #cartItems .articleBox { padding-bottom: 7px; } #cartItems #submit, #paymentForm #submit, #finalizeForm #submit { margin: 20px 0 0 10px; } #paymentForm { display: block; margin-top: 30px; font-size: .8em; } #paymentForm h3 { font-size: 1.2em; margin: 30px 0 10px; } #paymentForm p { font-size: 1em; } #paymentForm div { clear: both; margin: 0 0 7px; } #paymentForm label { float: left; width: 12em; margin: 0 15px 7px 0; font-weight: bold; text-align: right; } #paymentForm #termsAgreement { margin: 15px 0; padding: 10px 10px 0 10px; border: 1px solid #369; } #paymentForm #termsAgreement * { margin-left: 0; } #paymentForm #termsAgreement label { float: none; } #paymentSection, #productSection { clear: right; margin: 7px 10px; padding: 15px 0 7px; border-top: 1px solid #ccc; } #paymentSection h4, #productSection h4 { margin: 0 0 7px; padding: 0; } #paymentSection div { margin: 0 0 0 10px; font-size: .8em; } a.editLink { float: right; margin: 0 0 10px; } #productSection ul { clear: right; margin: 0; padding: 0; list-style: none; } #productSection ul li { margin: 0 0 15px; padding: 0; font-size: .875em; font-family: Arial, Helvetica, sans-serif; } #productSection h5 { margin: 0; padding: 0; font-family: Arial, Helvetica, sans-serif; font-size: 1em; } #productSection li div.rmButton { float: right; margin: 0 0 0 7px; } #productSection li div.price { float: right; width: 6em; margin: 5px 0 0 15px; padding: 0 0 0 7px; text-align: right; } #totalPrice { clear: right; float: right; margin: 0; padding: 0; font: bold .875em Arial, Helvetica, sans-serif; display: inline; /* EXPLORER SUCKS BIGTIME */ } form#cartItems #totalPrice { margin: 0 105px 0 0; } /* === END OF PROFILE STYLES === */ /* === START OF HELP STYLES === */ body.help #content-wrap { width: 765px; } body.help #content, body.help #contentMain { width: 760px; } body.help #textArea { width: 758px; min-height: 25em; } #helpMain { clear: both; display: block; margin: 0 0 0 2px; padding: 0 0 0 192px; background: #fff url(/templates/jsp/_style2/_achs/images/helpnav-bg.gif) repeat-y; min-height: 25em; } #helpMain ol { margin: 10px 0 0; padding: 0 0 0 32px; } #helpMain ol li { margin: 0; padding: 0 0 7px; font-size: .875em; } #helpMain ol a { text-decoration: none; } #helpMain ol a:hover { text-decoration: underline; } #helpNav { position: absolute; top: 42px; left: 3px; width: 175px; margin: 0; padding: 0; border-left: 1px solid #b6b6e1; border-right: 1px solid #b6b6e1; background: #d1e6f6; font-family: Arial, Helvetica, sans-serif; } #helpNav h2 { margin: 0; padding: 5px 3px 5px 5px; background: #369; color: #fff !important; font-size: .75em; line-height: normal; } #helpNav ul { margin: 0; padding: 0; list-style: none; } #helpNav ul li { display: block; border-top: 1px solid #fff; border-bottom: 1px solid #aebedc; font-size: .95em; } #helpNav ul li a { display: block; text-decoration: none; padding: 2px 0 1px; } #helpNav ul li a:hover { background: #fff; } #helpNav ul li a span { display: block; margin: 0 2px 0 5px; font-size: .75em; color: #369; } #textArea #helpMain h1 { margin: 0 0 20px; font-size: 1em; } #textArea #helpMain p { margin-left: 0; } #searchHelp { margin: 15px 3px 0 3px; font-size: .75em; } #searchHelp input { width: 150px; margin: 0 0 5px; } #searchHelp #searchHelpSubmit { width: auto; } body.help #rightColumn { width: 220px; padding: 0 0 35px; background: #fff; border: 1px solid #aebedc; min-height: 25em; } body.help #rightColumn h2 { margin: 2px 2px 10px 2px; padding: 5px 7px; background: url(/templates/jsp/_style2/_achs/images/h2-bg2.gif) repeat-x; } body.help #rightColumn h3 { margin: 7px 7px 5px 7px; font-size: .875em; } body.help #rightColumn h4 { margin: 7px 7px 0 7px; padding: 0; font-size: .75em; } body.help #rightColumn div { margin: 1px 7px; font-size: .75em; line-height: normal; } body.help #rightColumn div.marginTop { margin-top: 10px; } body.help #rightColumn hr { display: block; height: 1px; margin: 12px 7px; padding: 0; background: #aebedc; border: 0; } /* === END OF HELP STYLES === */ /* === DROPDOWN MENU STYLES BELOW === */ #nav { display: block; position: absolute; top: 0; left: 0; width: 1000px; height: 30px; margin: 0; padding: 0; list-style: none; } #nav li { position: relative; float: left; margin: 0; padding: 0; text-align: center; } /* === BEGIN PUBS MENUS === */ #navPubsHome a, #navJournals a, #navBooks a, #navAuthors a, #navLibrarians a, #navMembers a, #navAboutUs a, #navAlerts a, #navHelp a { display: block; height: 30px; margin: 0; padding: 0; background: transparent url(/templates/jsp/_style2/_achs/images/pubsNav.gif) no-repeat; } /* bg image initial states */ #navPubsHome a { width: 50px; background-position: 0 0; } #navJournals a { width: 96px; background-position: -50px 0; } #navBooks a { width: 63px; background-position: -146px 0; } #navAuthors a { width: 146px; background-position: -209px 0; } #navLibrarians a { width: 85px; background-position: -355px 0; } #navMembers a { width: 105px; background-position: -440px 0; } #navAboutUs a { width: 84px; background-position: -545px 0; } #navAlerts a { width: 74px; background-position: -629px 0; } #navHelp a { width: 57px; background-position: -703px 0; } /* bg image hover states... all .over classes are for IE */ #navPubsHome:hover a, #navPubsHome.over a { background-position: 0 -30px; } #navJournals:hover a, #navJournals.over a { background-position: -50px -30px; } #navBooks:hover a, #navBooks.over a { background-position: -146px -30px; } #navAuthors:hover a, #navAuthors.over a { background-position: -209px -30px; } #navLibrarians:hover a, #navLibrarians.over a { background-position: -355px -30px; } #navMembers:hover a, #navMembers.over a { background-position: -440px -30px; } #navAboutUs:hover a, #navAboutUs.over a { background-position: -545px -30px; } #navAlerts:hover a, #navAlerts.over a { background-position: -629px -30px; } #navHelp:hover a, #navHelp.over a { background-position: -703px -30px; } /* === END PUBS MENUS === */ /* === BEGIN JOURNAL DROPDOWN MENUS === */ #navJournalHome a, #navBrowse a, #navASAP a, #navCurrent a, #navMultimedia a, #navOnlineNews a, #navSubmission a, #navSubscription a, #navAbout a { display: block; height: 30px; margin: 0; padding: 0; background: transparent url(/templates/jsp/_style2/_achs/images/journalNav.gif) no-repeat; } /* bg image initial states */ #navJournalHome a { width: 49px; background-position: 0 0; } #navBrowse a { width: 139px; background-position: -49px 0; } #navASAP a { width: 107px; background-position: -188px 0; } #navCurrent a { width: 102px; background-position: -295px 0; } #navMultimedia a { width: 92px; background-position: -397px 0; } #navOnlineNews a { width: 95px; background-position: -489px 0; } #navSubmission a { width: 148px; background-position: -584px 0; } #navSubscription a { width: 99px; background-position: -732px 0; } #navAbout a { width: 87px; background-position: -831px 0; } /* bg image hover states... all .over classes are for IE */ #navJournalHome:hover a, #navJournalHome.over a { background-position: 0 -30px; } #navBrowse:hover a, #navBrowse.over a { background-position: -49px -30px; } #navASAP:hover a, #navASAP.over a { background-position: -188px -30px; } #navCurrent:hover a, #navCurrent.over a { background-position: -295px -30px; } #navMultimedia:hover a, #navMultimedia.over a { background-position: -397px -30px; } #navOnlineNews:hover a, #navOnlineNews.over a { background-position: -489px -30px; } #navSubmission:hover a, #navSubmission.over a { background-position: -584px -30px; } #navSubscription:hover a, #navSubscription.over a { background-position: -732px -30px; } #navAbout:hover a, #navAbout.over a { background-position: -831px -30px; } /* === END JOURNAL DROPDOWN MENUS === */ /* === BEGIN ARRC MENUS === */ #navArrcHome a, #navSubReview a, #navBenefits a, #navCopyPerm a, #navPubTools a, #navNewsAnnounce a { display: block; height: 30px; margin: 0; padding: 0; background: transparent url(/templates/jsp/_style2/_achs/images/arrcNav.gif) no-repeat; } /* bg image initial states */ #navArrcHome a { width: 50px; background-position: 0 0; } #navSubReview a { width: 147px; background-position: -50px 0; } #navBenefits a { width: 141px; background-position: -197px 0; } #navCopyPerm a { width: 171px; background-position: -338px 0; } #navPubTools a { width: 121px; background-position: -509px 0; } #navNewsAnnounce a { width: 166px; background-position: -630px 0; } /* bg image hover states... all .over classes are for IE */ #navArrcHome:hover a, #navArrcHome.over a { background-position: 0 -30px; } #navSubReview:hover a, #navSubReview.over a { background-position: -50px -30px; } #navBenefits:hover a, #navBenefits.over a { background-position: -197px -30px; } #navCopyPerm:hover a, #navCopyPerm.over a { background-position: -338px -30px; } #navPubTools:hover a, #navPubTools.over a { background-position: -509px -30px; } #navNewsAnnounce:hover a, #navNewsAnnounce.over a { background-position: -630px -30px; } /* === END ARRC MENUS === */ /* === BEGIN LRC MENUS === */ #navLrcHome a, #navLrcProd a, #navLrcSubs a, #navLrcLicensing a, #navLrcTools a, #navLrcLivewire a, #navLrcContact a { display: block; height: 30px; margin: 0; padding: 0; background: transparent url(/templates/jsp/_style2/_achs/images/lrcNav.gif) no-repeat; } /* bg image initial states */ #navLrcHome a { width: 50px; background-position: 0 0; } #navLrcProd a { width: 79px; background-position: -50px 0; } #navLrcSubs a { width: 157px; background-position: -129px 0; } #navLrcLicensing a { width: 147px; background-position: -286px 0; } #navLrcTools a { width: 121px; background-position: -433px 0; } #navLrcLivewire a { width: 145px; background-position: -554px 0; } #navLrcContact a { width: 110px; background-position: -699px 0; } /* bg image hover states... all .over classes are for IE */ #navLrcHome:hover a, #navLrcHome.over a { background-position: 0 -30px; } #navLrcProd:hover a, #navLrcProd.over a { background-position: -50px -30px; } #navLrcSubs:hover a, #navLrcSubs.over a { background-position: -129px -30px; } #navLrcLicensing:hover a, #navLrcLicensing.over a { background-position: -286px -30px; } #navLrcTools:hover a, #navLrcTools.over a { background-position: -433px -30px; } #navLrcLivewire:hover a, #navLrcLivewire.over a { background-position: -554px -30px; } #navLrcContact:hover a, #navLrcContact.over a { background-position: -699px -30px; } /* === END LRC MENUS === */ /* === BEGIN LIB ADMIN MENUS === */ #navLibAdminHome a, #navLibAdminSubs a, #navLibAdminUsage a, #navLibAdminAccess a, #navLibAdminCobrand a, #navLibAdminLinkres a, #navLibAdminAdmin a { display: block; height: 30px; margin: 0; padding: 0; background: transparent url(/templates/jsp/_style2/_achs/images/libAdminNav.gif) no-repeat; } /* bg image initial states */ #navLibAdminHome a { width: 50px; background-position: 0 0; } #navLibAdminSubs a { width: 102px; background-position: -50px 0; } #navLibAdminUsage a { width: 104px; background-position: -152px 0; } #navLibAdminAccess a { width: 97px; background-position: -256px 0; } #navLibAdminCobrand a { width: 90px; background-position: -353px 0; } #navLibAdminLinkres a { width: 97px; background-position: -443px 0; } #navLibAdminAdmin a { width: 106px; background-position: -540px 0; } /* bg image hover states... all .over classes are for IE */ #navLibAdminHome:hover a, #navLibAdminHome.over a { background-position: 0 -30px; } #navLibAdminSubs:hover a, #navLibAdminSubs.over a { background-position: -50px -30px; } #navLibAdminUsage:hover a, #navLibAdminUsage.over a { background-position: -152px -30px; } #navLibAdminAccess:hover a, #navLibAdminAccess.over a { background-position: -256px -30px; } #navLibAdminCobrand:hover a, #navLibAdminCobrand.over a { background-position: -353px -30px; } #navLibAdminLinkres:hover a, #navLibAdminLinkres.over a { background-position: -443px -30px; } #navLibAdminAdmin:hover a, #navLibAdminAdmin.over a { background-position: -540px -30px; } /* === END LIB ADMIN MENUS === */ /* hide the text for each navigation heading */ #nav li span { display: none; } /* the dropdown list styles */ #nav li ul { position: absolute; top: 28px; left: -1px; width: 187px; margin: 0; padding: 2px 0 0; background: #e9edf4; border-left: 1px solid #369; border-right: 1px solid #369; list-style: none; display: none; z-index: 201; } #nav li:hover ul, #nav li.over ul { display: block; } #nav li ul li { position: static; clear: left; float: left; display: block; width: 187px; margin: 0; padding: 0; border-bottom: 1px solid #369; text-align: left; } #nav li ul li a { display: block; width: 187px; height: auto; margin: 0; padding: 5px 0; font: .7em Arial, Helvetica, sans-serif; color: #021351; text-decoration: none; background: transparent; line-height: normal; } #nav li ul li a:hover { display: block; background: #fff !important; cursor: pointer; cursor: hand; /* for IE 5.5 */ } #nav li ul li a span { display: block; width: 174px; margin: 0 2px 0 4px; } #nav li#navAbout ul, #nav li#navAbout ul li, #nav li#navAbout ul li a { width: 168px; } #nav li#navAbout ul li a span { width: 155px; } /* === END OF DROPDOWN MENU STYLES === */ /* === START OF JOURNAL SELECTOR LAYER === */ #pubsSelector { position: absolute; top: 4.6em; right: 0; float: left; width: 727px; padding: 0 0 10px; border: 1px solid #849dad; background: #d8e3ed; z-index: 6000; font: .7em Arial, Helvetica, sans-serif; } #pubsSelector a, #pubsSelector a:visited { color: #384c88; text-decoration: none; } #pubsSelector a:hover { color: #fff; background: #369; } #pubsSelector #colOne { float: left; margin: 10px 0 0 10px; padding: 0; border-right: 1px solid #a5bac7; display: inline; /* EXPLORER SUCKS BIGTIME */ } #pubsSelector #colTwo { clear: none; float: left; width: 200px; margin: 10px 10px 0; display: inline; /* EXPLORER SUCKS BIGTIME */ } #pubsSelector ul { float: left; width: 230px; margin: 0 10px 0 0; padding: 0; list-style: none; display: inline; /* EXPLORER SUCKS BIGTIME */ } #pubsSelector ul li { clear: left; float: left; width: 230px; margin: 0 0 2px; padding: 0; } #pubsSelector #colTwo ul { width: 200px; margin-bottom: 15px; } #pubsSelector #colTwo ul li { width: 200px; } #pubsSelector ul li.letter { margin: 7px 0 0; font-weight: bold; color: #444; } #pubsSelector #colTwo ul li { margin-bottom: 5px; } #closeMenu { position: absolute; top: 5px; right: 5px; width: 15px; height: 15px; } #pubsSelector h4 { clear: left; display: block; margin: 0; font-size: 1em; text-decoration: underline; color: #033451; } /* === END OF JOURNAL SELECTOR LAYER === */ /* === SHOW MULTIPLE ABSTRACTS === */ h3.multiAbsHead { margin: 7px 7px 15px; font-size: 1em; color: #000; } /* === openURL === */ .openURL img { border: 1px solid #ccc; } .articleLinksIcons .icons .openURL { float: right; margin: 10px 0 5px; } body.article #articleMeta .openURL { margin: 5px 0; } /* Electronic Proof */ body.proof #content-wrap { clear: both; width: 990px; } body.proof #content, body.proof #contentMain, body.proof #textArea, body.proof #contentHead { width: 100%; } body.proof #textArea h2 { clear: left; margin-top: 30px; color: #333; } body.proof p { clear: left; } body.proof #textArea .returnLink, body.proof #textArea .commentForm { display: inline; float: none; margin: 7px 0 0; border: 0 !important; } body.proof #textArea .returnLink a, body.proof #textArea .commentForm a { float: left; padding: 1px 4px; } body.proof #textArea .commentForm { width: 7.25em; } body.proof #textArea .proofInstructions h2 { margin-top: 0; } body.proof #textArea ul { margin: 7px 20px 30px; padding: 0; } body.proof #textArea ul li { margin: 0 0 7px 17px; padding: 0; list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } body.proof #textArea ul li ul { margin-bottom: 0; } body.proof #textArea ul li div { margin-bottom: 15px; margin-left: 20px; } #articleID { float: left; width: 956px; margin: 0 0 15px 10px; padding: 7px; font-size: .8em; background: #eee; } #articleID h1 { margin: 0 0 3px 0; font-size: 1.2em; color: #000; } #proofForm { display: block; margin: 25px 0 0; padding: 0; } #proofForm label { display: block; margin: 7px 7px 7px 15px; font-size: .8em; } #proofForm textarea { width: 97%; margin: 7px 10px 0 10px; } #proofForm #submit { margin: 15px 0 15px 10px; } body.proof #textArea ul li #contactBlock { font-family: Arial, Helvetica, sans-serif; margin: 7px 0 7px 50px; } body.proof #textArea ul li #contactBlock div { margin: 0; } /* === Common Styles === */ div.errorBlock { min-height: 300px; margin: 10px; padding: 10px; background: #fff; font-size: .875em; } div.errorBlock h2 { margin-bottom: 1em; color: red; font-size: 1.2em; } div.errorBlock h3 { font-size: 1.1em; margin-bottom: 1em; } #contentHead { position: relative; width: 796px; margin: 0 0 10px; padding: 0 0 5px; border: 0; background: #fff; } body.arrc #contentHead, body.lrc #contentHead { width: 678px; } body.arrc #twoColText #contentHead, body.lrc #twoColText #contentHead { width: 517px; } body.help #contentHead { width: 758px; } #twoColText #contentHead { width: 635px; margin-left: 1px; } #contentHead h1, #contentHead h2, body.coverArt #textArea h2, body.issueList #textArea h2 { margin: 0 2px; padding: 7px 0 7px 7px; font: bold 1em "Trebuchet MS", Arial, Helvetica, sans-serif; color: #2d5073; background: url(/templates/jsp/_style2/_achs/images/h2-bg2.gif) repeat-x; } #twoColText { min-height: 45.35em; margin: 0; padding: 0 0 10px 160px; background: #fff url(/templates/jsp/_style2/_achs/images/sidenav-bg.gif) repeat-y; } #sideNav { position: absolute; top: 1px; left: 1px; width: 160px; margin: 0; padding: 0; border-right: 1px solid #b6b6e1; background: #d1e6f6; font-family: Arial, Helvetica, sans-serif; } #sideNav h2 { margin: 0; padding: 3px; background: #369; color: #fff !important; font-size: .8em; line-height: normal; } #sideNav ul { margin: 0 !important; padding: 0; list-style: none; } #sideNav ul li { display: block; margin: 0 !important; padding: 0 !important; border-top: 1px solid #fff; border-bottom: 1px solid #aebedc; font-size: .95em; } #sideNav ul li a { display: block; text-decoration: none; padding: 2px 0 1px; } #sideNav ul li a:hover { background: #fff; } #sideNav ul li a span { display: block; margin: 0 2px 0 5px; font-size: .75em; color: #369; } #sideNav ul li.onPage a { background: #ffffe4 url(/templates/jsp/_style2/_achs/images/onPage.gif) no-repeat right; } #sideNav ul li.onPage a span { font-weight: bold; } .sideBox { position: relative; top: 0; clear: right; float: right; margin: 0 10px 10px; padding: 7px 7px 0; border: 1px solid #888; font-family: Arial, Helvetica, sans-serif; display: inline; /* EXPLORER SUCKS BIGTIME */ } .pageTop { top: 11px; } .sideBox h2 { margin: 0 !important; color: #333 !important; } .sideBox p { margin: 0 0 10px !important; font-size: .8em; line-height: normal !important; } .sideBox .credit { text-align: right; margin-bottom: 5px !important; font: italic .7em Arial, Helvetica, sans-serif !important; } .sideBox .caption { margin-bottom: 7px !important; font-size: .8em !important; } #articleBody .sideBox { font-size: 1.145em; } .leftSide { clear: left; float: left; margin: 0 10px 10px; } .fullBox { clear: both; margin: 15px auto; padding: 0 10px; text-align: center; border: 1px solid #ccc; } .fullBox .credit { text-align: right; margin: 0 0 10px 0; font: italic .7em Arial, Helvetica, sans-serif !important; } .fullBox .caption { font-size: .8em !important; text-align: left; } .fullBox p { width: auto !important; text-align: left; } .fullBox div { font-size: .8em; text-align: left; } #monthYearNav { float: right; } #monthYearNav * { vertical-align: middle; } #monthYearNav div, #monthYearNav strong { margin: 5px 0; font-size: .8em; font-family: Arial, Helvetica, sans-serif; } #monthYearNav input { margin: 0 7px 0 0; } div.button { float: left; border: 1px solid #369 !important; } div.button a, div.button a:hover { display: block !important; padding: 1px 2px; font-size: .9em; color: #fff !important; background: #69c !important; text-decoration: none !important; } div.button a:hover { background: #369 !important; } .backButton { position: absolute; top: 0; right: 0; height: 29px; background: #fff; } .backButton a { display: block; height: 21px; margin: 1px; padding: 5px 7px 0 30px; background: #f7fbfd url(/templates/jsp/_style2/_achs/images/back-button.gif) no-repeat 5px 5px; border: 1px solid #d8ebf9; font-size: .75em; } .backButton a:hover { background-position: 5px -18px; } .audioBoxWrap { padding-top: 10px; border-top: 1px solid #ccc; } .audioBoxWrap img.cover { float: right; margin-left: 7px; margin-right: 7px; border: 1px solid #ccc; } .audioBoxWrap h2 { margin-top: 0 !important; color: #333 !important; font-size: .9em; } .audioBoxWrap div { clear: left; margin-left: 10px; font-size: .8em; } .audioBoxWrap p { margin-bottom: 0 !important; } .audioBoxWrap .info { padding: 2px 0; font-family: Arial, Helvetica, sans-serif; } #textArea div.landingBox { width: 318px; float: left; margin: 0 8px 18px 11px; display: inline; } #textArea div.landingBox h2 { margin-top: 8px; margin-bottom: 0px; padding-top: 0; } #textArea div.landingBox h3 { margin-bottom: 5px; padding-bottom: 0; } #textArea div.landingBox img { float: right; margin: 10px 0 10px 10px; } #textArea #contentHead a.landingReturn { float: right; margin: 7px; font-size: .75em; } .ppTable { margin: 10px auto; font-size: .875em; } .bgcolor2 { background: #69c; } .bgcolor5 { background: #ccc; } .bgcolor6 { background: #f2f2f2; } .alignH2 { margin-top: 1em !important; } .centered { text-align: center !important; } .bottom { margin: 5px 0 10px !important; } .padBox { padding: 10px !important; } .padTop { padding-top: 7px !important; } .reallyPadTop { padding-top: 15px !important; } .padBottom { padding-bottom: 7px !important; } .marginLeft10 { margin-left: 10px !important; } .marginRight10 { margin-right: 10px !important; } .marginSides10 { margin-left: 10px !important; margin-right: 10px !important; } ul.marginBottom { margin-bottom: 17px !important; } .hide { display: none; } .flLeft { float: left; margin-right: 7px; display: inline; /* EXPLORER SUCKS BIGTIME */ } .flRight { float: right; margin-left: 7px; display: inline; /* EXPLORER SUCKS BIGTIME */ } .alignRight { text-align: right !important; } .clearBoth { clear: both !important; } br.clearBoth { line-height: 7px; } .noBorder { border: 0 !important; } .noBreak { white-space: nowrap !important; } .noMargin { margin: 0 !important; } .noPadding { padding: 0 !important; } .small { font-size: .9em !important; } .smaller { font-size: .8em !important; } .large { font-size: 1.1em !important; } .larger { font-size: 1.2em !important; } .noBold { font-weight: normal !important; } .bordered { border: 1px solid #ccc !important; } .alignMid * { vertical-align: middle !important; } .w50 { width: 50px !important; } .w75 { width: 75px !important; } .w100 { width: 100px !important; } .w125 { width: 125px !important; } .w150 { width: 150px !important; } .w175 { width: 175px !important; } .w200 { width: 200px !important; } .w225 { width: 225px !important; } .w250 { width: 250px !important; } .w275 { width: 275px !important; } .w300 { width: 300px !important; } .w325 { width: 325px !important; } .w350 { width: 350px !important; } .w370 { width: 370px !important; } .w375 { width: 375px !important; } .w400 { width: 400px !important; } .w425 { width: 425px !important; } .w450 { width: 450px !important; } .w475 { width: 475px !important; } .w500 { width: 500px !important; } .w525 { width: 525px !important; } .w550 { width: 550px !important; } .w575 { width: 575px !important; } .w600 { width: 600px !important; } .w625 { width: 625px !important; } .w650 { width: 650px !important; } .w675 { width: 675px !important; } .w700 { width: 700px !important; } .w725 { width: 725px !important; } .w750 { width: 750px !important; } .w775 { width: 775px !important; } .w800 { width: 800px !important; } a.underline { text-decoration: underline !important; } a.underline:hover { text-decoration: none !important; } ul.noBullet { margin: 15px 0; padding: 0; list-style: none; } ul.noBullet li { margin: 0 0 5px; padding: 0; } ul.noBullet li img { margin-right: 7px; } ul.noBullet li a { text-decoration: none; vertical-align: middle; } ul.noBullet li a:hover { text-decoration: underline; } /* === Alternate Color Schemes === */ /* Green */ body.green { background: #fff url(/templates/jsp/_style2/_achs/images/body-bg-green.gif) repeat-x; } #container.green #nav-wrap-journal { background: transparent url(/templates/jsp/_style2/_achs/images/navbar-bg-green.gif) no-repeat; } #container.green #navJournalHome a, #container.green #navBrowse a, #container.green #navASAP a, #container.green #navCurrent a, #container.green #navMultimedia a, #container.green #navOnlineNews a, #container.green #navSubmission a, #container.green #navSubscription a, #container.green #navAbout a { background-image: url(/templates/jsp/_style2/_achs/images/journalNav-green.gif); } #container.green #nav li ul li a { background: transparent; } #container.green .findIssue { background: #12703d; } #container.green .findCitation { background: #77aa90; } #container.green #articleAreaHeader { background-image: url(/templates/jsp/_style2/_achs/images/articleView-tabs-bg-green.gif); } #container.green #articleAreaHeader ul li a { background-image: url(/templates/jsp/_style2/_achs/images/articleView-tabs-green.gif); } #container.green h2, #container.green h3 { color: #29754e; } #container.green .findIssue h3, #container.green .findCitation h3 { color: #fff; } #container.green #mainBody { background: #f2fced url(/templates/jsp/_style2/_achs/images/topright-green.gif) right top no-repeat; } #container.green #content-wrap { background: transparent url(/templates/jsp/_style2/_achs/images/topleft-green.gif) left top no-repeat; } #container.green .sideColBox, #container.green .rtColBox { border-color: #a3cdb7; } #container.green #content, #container.green #articleContent, #container.green #contentHead, #container.green #slides, #container.green #articleArea, #container.green .articleBox, #container.green #abstractBox, #container.green #supInfoBox, #container.green #aiContent, #container.green #nav li ul, #container.green #nav li ul li, #container.green #sideNav, #container.green #textArea, #container.green #tocHead, #container.green #newsIndexContent { border-color: #a3cdb7; } #container.green #citationJump .info { background: url(/templates/jsp/_style2/_achs/images/info-green.png); } #container.green .articleOptions .viewAbs { background: url(/templates/jsp/_style2/_achs/images/viewAbs-green.png); } #container.green .articleOptions .downCitations { background: url(/templates/jsp/_style2/_achs/images/downCit-green.png); } #container.green .articleOptions .showThumbs { background: url(/templates/jsp/_style2/_achs/images/showAllThumbs-green.png); } #container.green #articleArea .articleOptions .info { background: url(/templates/jsp/_style2/_achs/images/info-whitebg-green.png); } #container.green #rssBox a { background: url(/templates/jsp/_style2/_achs/images/rssbox-green.gif); } #container.green .rtColBox .formSubmit { background: url(/templates/jsp/_style2/_achs/images/go-green.png); } body.green #pageFooter-wrap { background: #086030; } #container.green #contentHead h1, #container.green #contentHead h2, #container.green #articleHead h2, #container.green .rtColBox h2, #container.green #tocHead h2, body.coverArt #container.green #textArea h2, body.issueList #container.green #textArea h2, body.authIndex #container.green #aiContent h2 { background: url(/templates/jsp/_style2/_achs/images/h2-bg2-green.gif) repeat-x; color: #29754e; } #container.green #articleTools { background: #dbf0e5; } #container.green #articleTools h3 { color: #fff; background: #56a074; } #container.green #articleTools li a, #container.green #articleTools li a:visited, #container.green #articleTools ul.history li { background-color: #dbf0e5; border-left-color: #29754e; } #container.green #articleContent { background: #fff url(/templates/jsp/_style2/_achs/images/articleContent-bg-green.gif) repeat-y right top; } #container.green #articleMain #links { background: url(/templates/jsp/_style2/_achs/images/gradient1-green.gif) repeat-x; } #container.green #links ul li.onPage span, #container.green #links ul li a:hover { background: #29754e; } #container.green #articleNav { background: url(/templates/jsp/_style2/_achs/images/articleNav-green.gif) no-repeat 0 -58px; } #container.green #articleNav a { background-image: url(/templates/jsp/_style2/_achs/images/articleNav-green.gif); } #container.green #articleNavB .tocLink { background-image: url(/templates/jsp/_style2/_achs/images/tocLink-green.gif); } #container.green #articleNavC, #container.green #articleNavC a { background-image: url(/templates/jsp/_style2/_achs/images/articleNav-ASAP-green.gif); } #container.green #articleNavD, #container.green #articleNavD a { background-image: url(/templates/jsp/_style2/_achs/images/articleNav-JAM-green.gif); } #container.green .articleGroupHead { background: #12703d url(/templates/jsp/_style2/_achs/images/toc-h3-tl-green.gif) no-repeat left top; } #container.green .articleGroup h3 { color: #fff; background: url(/templates/jsp/_style2/_achs/images/toc-h3-tr-green.gif) no-repeat right top; } #container.green #issueNav { background: url(/templates/jsp/_style2/_achs/images/issueNav-green.gif) no-repeat 0 -58px; } #container.green #issueNav a { background-image: url(/templates/jsp/_style2/_achs/images/issueNav-green.gif); } #container.green #volumeNav { background-image: url(/templates/jsp/_style2/_achs/images/volumeNav-green.gif); } #container.green #volumeNav a { background-image: url(/templates/jsp/_style2/_achs/images/volumeNav-green.gif); } #container.green div.alphaSelect, #container.green div.alphaSelect a, #container.green div.alphaSelect a span.onPage { background-image: url(/templates/jsp/_style2/_achs/images/alphabet-green.gif); } #container.green #twoColText { background-image: url(/templates/jsp/_style2/_achs/images/sidenav-bg-green.gif); } #container.green #twoColText h1 { color: #29754e; } #container.green #twoColText h2.subtitle { color: #333; } #container.green #sideNav { background: #dbf0e5; } #container.green #sideNav h2 { background: #12703d; } #container.green a.showThumbs { background-image: url(/templates/jsp/_style2/_achs/images/showAllThumbs-green.png); } #container.green #onlineNewsNav a { background-image: url(/templates/jsp/_style2/_achs/images/onlineNewsNav-green.gif); } /* Added by Atypon */ #issueList .closed ul { display: none; } #issueList .closed .plusMinus { background-position: 0 0 } .citation_year { font-weight: bold; } .citation_volume { font-style: italic; } .figure .altMedium, .figure .altLarge, .figureNav .disabled, .disabled { display: none; } #figureViewerNav .figureNav span .index { font-size: 1em; } ul.references li { margin-bottom: 1em; } ul.references li .NLM_citation { margin-bottom: 0.5em; } .balloon div { display: inline; } .balloon .NLM_citation span { display: inline; } .sfxLink img { margin-left: 0.5em; margin-bottom: -5px; } .NLM_disp-formula { margin: 1em; text-align: center; } #articleBody .NLM_p, #articleBody p { width: 610px; margin: 0pt 0pt 1.5em; padding: 0pt; line-height: 1.6em; word-wrap: break-word; } #articleBody p p, #articleBody .NLM_p p, #articleBody .footnote p, #articleBody #abstractBox p, #articleBody .caption p, #articleBody .NLM_table-wrap p, #articleBody li p, body.newsStory #articleBody p, #articleBody .quote p, #articleBody .boxed-text-float p { width: auto; } #articleBody img { max-width: 570px; } #articleBody .NLM.disp-formula img { max-width: 500px; } #articleBody .graphic_meta { font: .8em Arial, Helvetica, sans-serif; } #articleBody .graphic_meta p { width: 570px; margin-top: .2em; margin-bottom: .2em; line-height: normal; } p.last { margin-bottom: 0; } table p.last, .NLM_table-wrap p.last, .balloon p.last, #references p.last, #correspondence p.last, #references .note { display: inline; } #articleBody .NLM_p sup, #articleBody p sup { line-height: 0; } a.ref { text-decoration: none; } a.ref sup, sup a.ref { text-decoration: underline; } .NLM_table-wrap, .NLM_table-group-wrap > table > table { border: 1px solid black; border-width: 1px 0; } .NLM_table-wrap { /* This entry needs to be called out separately or else IE6 won't recognize it (because the > table > table part of the above entry breaks IE's parsing of the code */ clear: both; width: 600px; overflow: auto; } #articleBody div .NLM_table-wrap, #articleBody div table { width: auto; max-width: 550px; } .NLM_table-group-wrap { margin: 0; padding: 0; } .NLM_table-wrap table { width: auto; margin: 1em 2px; padding: 1em 0; border: 1px solid black; } .NLM_table-group-wrap > table { width: 100%; margin: 0; padding: 0; border: 1px solid black; border-collapse: collapse; } .NLM_table-group-wrap > table > tbody { margin: 0; padding: 0; } .NLM_table-group-wrap > table > tbody > tr { margin: 0; padding: 0; } .NLM_table-group-wrap > table > tbody > tr > td { margin: 0; padding: 0; border: 1px solid black; border-collapse: collapse; } .NLM_table-group-wrap > table table { margin: 0; padding: 0; border: 1px solid black; border-collapse: collapse; } .NLM_table-group-wrap > table table td { margin: 0; padding: 0; border: 1px solid black; border-collapse: collapse; } .NLM_table-wrap-foot { margin-top: 0.5em; } .NLM_table-wrap .NLM_caption, .NLM_table-group-wrap .NLM_caption { font-weight: bold; } .NLM_citation .NLM_year { font-weight: bold; } /* Added by Atypon, QA.2 - fn reference */ #articleTools .history a.ref, #articleTools .history a.ref:visited, #articleTools .history a:hover { display: inline; background: none !important; border: none !important; } .originalMathML, .generatedMathML { display: block; border: 1px solid #777; background-color: #eee; padding: 5px; } a.coverArt_link { border: 0; } .journalCover img, #tocCover img, a.coverArt_link img { width: 115px; } .privateChar { margin-bottom: 2px; vertical-align: middle; } .column h3 { margin-left: 10px; } /*to override style.css*/ td { font-family:inherit; font-size:inherit; } #articleAreaHeader ul li a#justAcceptedTab.on { background-position: -4px -29px !important; } #articleAreaHeader ul li a#justAcceptedTab.off { background-position: -4px -4px !important; } #articleAreaHeader ul li a#justPublishedTab.on { background-position: -99px -29px !important; } #articleAreaHeader ul li a#justPublishedTab.off { background-position: -99px -4px !important; } #articleAreaHeader ul li a#currentIssueTab.on { background-position: -194px -29px !important; } #articleAreaHeader ul li a#currentIssueTab.off { background-position: -194px -4px !important; } #articleAreaHeader ul li a#mostReadTab.on { background-position: -289px -29px !important; } #articleAreaHeader ul li a#mostReadTab.off { background-position: -289px -4px !important; } #articleAreaHeader ul li a#mostCitedTab.on { background-position: -384px -29px !important; } #articleAreaHeader ul li a#mostCitedTab.off { background-position: -384px -4px !important; } .teaser { font-size: 0.8em; } .hidden { display: none; } #abstractBox .figure { display: inline; background: none; float: none; width: auto; border: none; padding: 0; margin: 0; } .entity { vertical-align: middle; } .entityD { vertical-align: bottom; } /* Atypon change - move */ #supInfoBox h3 { margin: 7px 0 0 7px; font-size: 1em; color: #000; } #supInfoBox ul { margin: 0 0 20px; padding: 0 0 0 25px; } #supInfoBox ul li { list-style-image: url(/templates/jsp/_style2/_achs/images/bullet1-trans.gif); } #supInfoBox ul li img { margin: 0 5px 0 0; } #supInfoBox p { font-size: .875em; margin: 10px 7px 7px 7px; } /* b15394 */ span.perennialReviewAddition { color: green; } span.perennialReviewDeletion { color: red; text-decoration: line-through; } .artTypeNotFound { font-size: 0.8em; margin-bottom: 1em; } /*added by Atypon*/ #articleBody #references .figures, #articleBody #references a.thumbnail{ float: none; } .quote { clear: both; display: block; margin: 1em 20px; padding: 10px 15px 1px; border: 1px solid #ccc; font: bold 1em Verdana, Arial, Helvetica, sans-serif; background: #efefef; color: #555; text-align: justify; } div.boxed-text-, div.boxed-text-anchor, div.boxed-text-float { clear: both; margin: 1em 20px; padding: 7px 10px 1px; border: 1px solid #ccc; font: .875em Arial, Helvetica, sans-serif; background: #efefef; } .journal .notInJournal { display: none; } ol#references.useLabel { display: block; list-style: none; } #references .refLabel { float: left; width: 2em; margin-left: -2.5em; font-weight: normal; text-align: right; } .NLM_fn .NLM_fn-symbol { float: left; } .federation select { width: auto; } .federation label { display: none; } #emailPageConfirm { margin: 0 0.5em; padding: 1em 1em 10em 1em; background: #fff; border: 1px solid #b6b6e1; font-size: smaller; } #citedBy p.articleBody_abstractText { width: auto; } .NLM_inline-graphic img { vertical-align: middle; } .IN_LIST-title { font-style: italic; display: block; margin: 1em 0 1em -2.5em; } .graphic_meta .NLM_permissions { margin: 0 0 1.5em; } ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=body-bg.gif Content-Type: image/gif; name=body-bg.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/body-bg.gif Content-Transfer-Encoding: Base64 R0lGODlhAQCbANUAAA9Ngh5zs////+fw6/z9/Ozz7/3+/ujx7Pb59/L29Ory7vP4 9e308Pz+/ff6+Pb6+Ojw6/v8/PT59vT49vf6+fn7++3z7/r7+vL39e/18e307/3+ /eny7fr8/Pr8++vy7/39/Pn7+fj6+fD18/T39eny7Onx7P/+/vX59/n8+v7//u70 8fH28+/08ury7fD28+jw7PD18v/+/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAABAJsAAAZMwIBwSCwWAcikcslsOp/Q p2BAHUBgh4OpxHEpFJ+C2KJhMFatTOw1YiUSmAVpMZGgEIiHgyIKpS4VHh0RBIUg DRsGBionAjICkJECQQA7 ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=navbar-bg.gif Content-Type: image/gif; name=navbar-bg.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/navbar-bg.gif Content-Transfer-Encoding: Base64 R0lGODlh6AMeAOYAABw/lEllqaKw0zBMlEFdoR8/lENfoylFlDdTlyxIlD5anh0/ lDNPlCZClCI/lEZipjpWmkhkqIeZxlt0sTRTn/////X3+qe11sLL4qm21k1oq/Hz +KWy1Ky42PDy+FlysL7I4MDJ4aa01cHK4VBpp2Z+t5WlzUdgn1Rtq0JfpjxVnzZT n2R8tjpYopmoz0xmpIOWxH2Rwpqpz0pjokpmqVZwrj5YnyJEl4qcyIudyGB4tFhx sERen1Vvrp+t0kFanzlTn1JsqmN7tQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAADoAx4AAAf/gBUWGB0ChoeIiYqLjI2O j5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsIYcIBYVGxmxubq7vL2+ v8DBwsPExcbHyMmlFx4jhzBCE9LT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u 7/Dx8vP09fb3+Pn6+/olOYchLhiKEaCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rc yLGjx48gQ4ocSbKkyZMoU6pcybKly5cBaOAwJOJQD5g4c+rcybOnz59AgwodSrSo 0aNIQbJQlLSp06dQo0qdSrWq1atYs178wFSr169gw4odS7as2bNoC3JNFKGt27dw /+PKnUu3rt27ePPq3cu3r9+/gAMLHky4sOHDiBMrXsy4sePHkCNLnky5suXLbnco esC5s+fPoEOLHk26tOnTqFOrXs26tevXsGPLnk27tu3buHPr3s27t+/fwIMLH068 uPHONRQZWM68ufPn0KNLn069uvXr2LNr3869u/fv4MOLH0++vPnz6NOrX8++vfv3 8OPLn0+/PnMUigjo38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGF GGao4YYcdujhhyCGKOKIJO4XhCIKpKjiiiy26OKLMMYo44w01mjjjTjmqOOOPPbo 449ABinkkEQWaeSRSCap5P+STDbp5JNQRinllCqSoAgEWGap5ZZcdunll2CGKeaY ZJZp5plopqnmmmy26eabcMYp55x01mnnnXjmqeeefPbp55+ABipoli8ogsChiCaq 6KKMNuroo5BGKumklFZq6aWYZqrpppx26umnoIYq6qiklmrqqaimquqqrLbq6quw xoroDIowYOutuOaq66689urrr8AGK+ywxBZr7LHIJqvsssw26+yz0EYr7bTUVmvt tdhmq+223Hbr7bfg3nqCIgOUa+656Kar7rrstuvuu/DGK++89NZr77345qvvvvz2 6++/AAcs8MAEF2zwwQgnrPDCDDfs8MPm8qBIAhRXbPH/xRhnrPHGHHfs8ccghyzy yCSXbPLJKKes8sost+zyyzDHLPPMNNds880456zzzjz37HPFPyhywNBEF2300Ugn rfTSTDft9NNQRy311FRXbfXVWGet9dZcd+3112CHLfbYZJdt9tlop6322my3TbQN ijQg99x012333XjnrffefPft99+ABy744IQXbvjhiCeu+OKMN+7445BHLvnklFdu +eWYZ6755pzPrYIiDoQu+uikl2766ainrvrqrLfu+uuwxy777LTXbvvtuOeu++68 9+7778AHL/zwxBdv/PHIJ6/88qIDoUgB0Ecv/fTUV2/99dhnr/323Hfv/ffghy/+ //jkl2/++einr/767Lfv/vvwxy///PTXb//9+Oevf/QrKLLA/wAMoAAHSMACGvCA CEygAhfIwAY68IEQjKAEJ0jBClrwghjMoAY3yMEOevCDIAyhCEdIwhKa8IQoTCEA KaAIALjwhTCMoQxnSMMa2vCGOMyhDnfIwx768IdADKIQh0jEIhrxiEhMohKXyMQm OvGJUIyiFKdIxSpa8YpYfCELE5HFLnrxi2AMoxjHSMYymvGMaEyjGtfIxjYqcYuI cKMc50jHOtrxjnjMox73yMc++hGIcDzEDf5IyEIa8pCITKQiF8nIRjrShS04hEAE oIFHWvKSmMykJjfJyU56En2NOqCJMwTgghR88pSoTKUqV8nKVrrSjRrwgSFCcItD mEACuMylLnfJy1768pfADKYwh0nMYhrzmMhMpjKXycxmOvOZ0IymNKdJzWpa85rY zKY2t8nNbnrzm+AMJzhlIEkPCIIQykinOtfJzna6853wjKc850nPel5iFrUIBAA7 ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=profile.png Content-Type: image/png; name=profile.png Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/profile.png Content-Transfer-Encoding: Base64 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 ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=searchbox-tl.png Content-Type: image/png; name=searchbox-tl.png Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/searchbox-tl.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAu8AAAAGCAIAAAD8NedlAAAABGdBTUEAANbY1E9Y MgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABuSURBVHja 7NY7DoJAGIVRHxNCiDiBDhOpbAwFLaUbcAFU7INyCrfk9nQbf3JOdetbfcf8LkNf lW1cnu1/HAAAQkmPW/39TN0l+QIAiOi0r3cpAwAErpnXnL0AAASumWtz9gIAELhm XAAAhPYTYAAhpAY0mZCHegAAAABJRU5ErkJggg== ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=searchbox-tr.png Content-Type: image/png; name=searchbox-tr.png Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/searchbox-tr.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAIAAABvrngfAAAABGdBTUEAANbY1E9Y MgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAA6SURBVHja Yvz9cycDA8Pzd79OXP9ct/ARkMEIEYKA91/++NRcQxECgq0n36MLff3xF10ICLAI AQQYAIPFJBrAbKl6AAAAAElFTkSuQmCC ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=searchbox-bl.png Content-Type: image/png; name=searchbox-bl.png Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/searchbox-bl.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAABGdBTUEAANbY1E9Y MgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAySURBVHja Yvz9c+d/BiyAiQEHAEl8xCWxD5dEDRC/w5BgYXO7BqT1gHgNEL+ASQAEGAAazwm5 lpqbDAAAAABJRU5ErkJggg== ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=searchbox-br.png Content-Type: image/png; name=searchbox-br.png Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/searchbox-br.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAABGdBTUEAANbY1E9Y MgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAvSURBVHja Yvz9c+d/BiyAiQEHwCXxBZfEbmwS74C4BlniBRCvAWI9Fja3awABBgDMVwm5JPxs +QAAAABJRU5ErkJggg== ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=topright.gif Content-Type: image/gif; name=topright.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/topright.gif Content-Transfer-Encoding: Base64 R0lGODlhAwADAJEAAP///+72/PH4/fP4/SH5BAAAAAAALAAAAAADAAMAAAIFFBCD IQUAOw== ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=topleft.gif Content-Type: image/gif; name=topleft.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/topleft.gif Content-Transfer-Encoding: Base64 R0lGODlhAwADAJEAAP///+72/PH4/fP4/SH5BAAAAAAALAAAAAADAAMAAAIFBAQT ElEAOw== ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=bullet1-trans.gif Content-Type: image/gif; name=bullet1-trans.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/bullet1-trans.gif Content-Transfer-Encoding: Base64 R0lGODlhBQAJAIABAFpyq////yH5BAEAAAEALAAAAAAFAAkAAAIKjI8QasoLXUT0 FAA7 ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=bullet1-white-trans.gif Content-Type: image/gif; name=bullet1-white-trans.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/bullet1-white-trans.gif Content-Transfer-Encoding: Base64 R0lGODlhBQAJAIABAP///////yH5BAEAAAEALAAAAAAFAAkAAAIKjI8QasoLXUT0 FAA7 ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=go.png Content-Type: image/png; name=go.png Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/go.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABkAAAARCAYAAAAougcOAAAABGdBTUEAANbY1E9Y MgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJhSURBVHja Yrz47BtD34q9nWyszE6///zV/Pf/PxsDA8M/BvIBEyMD4x+geXeA5u0tDHcuZIzr 3dT2n4GhIsTRkFFckI+BhZmJ4f///2TbwMjIyPD33z+GNx++MGw4fPHrr99/Z7Kw s7FoOxmrMypICDNQC7AyMDPIiAkyeFvpcm89dtmGCSgmz8vJwUALIMjLBfTVf0UW IJsZ6EMM8P79J4ZjR88xPH/+GszX0lJmsLI2gsv/+PGT4dzZqwzXrt2FyxsZazNw cLDD1UCD/T/IJxgRADJ4yqTFYEvABn7/wbB1ywGggXfgFsyZtQosBpKDyXd3zgHL oQMWdAGYASCQkxfLICkpCmbfv/eYQVFJFsyG+dDbxwHuO5Cv1q7ZCbYsOMQdNbmh W3IPaBjIImsbI7gFIACzAGagIDAlIgcfKKhAYiDHEPTJC2gcKCrKoBj64cMnMNvJ 2RIcX8iWwoCAID9WS5iISSWgoAFZtHfPcfJyJ7qABDSIzp27BhcDhT0oOGAAFIzo LgYFMUgMOYhxWqKlpQIOW5DLQREMSy2gIIKr0VYB06CIhlkAinAQQI4nnHECAtGx /gxLF28Ea4RphvkAFi/37j0BOwSEkSMf2cfIljAxoOVGkGGg5Hvt6h14hIMSAnJk p6SGgvMNLKFoAkMAPagYIeYysgAz5YPP335gWA/KudhchR60IIwLfP76g4GZifEZ E7A4vrr71PVvr95/pmq59f7zN4ZtJ658+vP332FGUH3Sv3LvBBZmZn9gES3BxsL8 G+g7RvKLeob/QIezABmfgYXX+vwwpwyAAAMAJ6IYX4xomfkAAAAASUVORK5CYII= ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=citFndOr.png Content-Type: image/png; name=citFndOr.png Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/citFndOr.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAKIAAAAOCAYAAACsLMeOAAAABGdBTUEAANbY1E9Y MgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEbSURBVHja 7JfbCcJAEEV3xX/twJSQEmIHWoGmAtOBpgKxgmgFxgq0A7UCtwPTQZyFGwhLXmhE hHvgko/d/AyHmR2d57ki5Ndoikgo4v8xkywkY8lNEksynPmSbemuPd9JDMvWzoAl 6EwE0Q4Q0JM88FWQM5BcECvtmWVjR+wTK9lTMoVkBUd0xBASWvF0yz+EHfGjkWwq hDpBwCYylq+doYQtsWFi4DupeeuZ0mguWOO7lOzxVixgrRtE1CzD1zpoWCM24Wh+ i3vNCPadjqewyMxxP2DpKGKfpHjrRc4Cs8JZ1cjeSBLcI9yaex23CcQzeAMabMWq Zmu+4p0Ys3wUsU88CDnCuE6dDuk7m7WHXFg6ikgoIiHdeAkwAA2CSoIrypEiAAAA AElFTkSuQmCC ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=info.png Content-Type: image/png; name=info.png Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/info.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAADIAAAASCAYAAAAZk42HAAAABGdBTUEAANbY1E9Y MgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKESURBVHja Yvz//z8DMpi95hIXkPIBYkcgNgNiFajUHSA+BcT7gXhLaojeN4ZBBBiRPQL0hCuQ Snv99kvIjbuvGF68+cwAZDOwMDMxCAlyMchKCjDoqEkycHOxrQGqmwX0zO5B5xGg JyJ///lbe/jUPU2QJ3ABNlZmBntzZQZVRdFrQG4L0DPLB41HQDEB9MTEzXuuar54 /ZkojZoq4gyOliogzxQMhphhguaJNFBMYPOElBgvg7qiCIb49TsvGS7deKYF0gs1 AwN8//btP7EOAaklRT2GR0AZG5Yn0EFJsjXD1tkxDCsmhGL1zOlLjxl+/vwTAi0c yAYgD3BycTGCMLlmsIBKJ1DoYgMHTt5n+Pz1J8PZK88Ybt5/gyEP9ATD7YdvgAWA BKiEW4UuT4nDyIkRs8fPP2CV5OVhB8dEX5UHg4mOFFY1z15+ZIAW03iTCoyPTRxX 0sKmHl+MqIBCHRtQUxBmcLRQxGvA12+/GJDqGpTYQHcAcgwhJycYG1tyw8XHFiMM TIzY5UFJimCxx8g4GEpfsEfuCPBz4kxa2NjIgA8ifmcweOSUnJQgVklfR3WsbGQA qu2hTZcBBaA8sl9LVTzjwrWnDP/+oeap+kn7GZZtvgRm37z/FkMzDzc7g7I8uFje T22HoecxQiUgKEa28PFwrDHRlcWQBBUCZ4D5BISxFQigpgoTEyOo3bUFl2NwOQSf HLI4sfULE7QVO8tET/aahrIY0SFmY6rIIC8teA3aeBzwljBKoxFI1Vy++Vzr5PmH DL9+/8WqAZSc7MyUGBRkhAZfoxG9GQ9qdtx99Ibh6ctPDB8+fQfLiQhyM4AKBUVZ IVhyGpzN+KHesQIIMADnKECt08LozAAAAABJRU5ErkJggg== ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=journals-bg.jpg Content-Type: image/jpeg; name=journals-bg.jpg Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/journals-bg.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAUAAA/+IMWElDQ19Q Uk9GSUxFAAEBAAAMSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNz cE1TRlQAAAAASUVDIHNSR0IAAAAAAAAAAAAAAAEAAPbWAAEAAAAA0y1IUCAgAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARY3By dAAAAVAAAAAzZGVzYwAAAYQAAABsd3RwdAAAAfAAAAAUYmtwdAAAAgQAAAAUclhZ WgAAAhgAAAAUZ1hZWgAAAiwAAAAUYlhZWgAAAkAAAAAUZG1uZAAAAlQAAABwZG1k ZAAAAsQAAACIdnVlZAAAA0wAAACGdmlldwAAA9QAAAAkbHVtaQAAA/gAAAAUbWVh cwAABAwAAAAkdGVjaAAABDAAAAAMclRSQwAABDwAAAgMZ1RSQwAABDwAAAgMYlRS QwAABDwAAAgMdGV4dAAAAABDb3B5cmlnaHQgKGMpIDE5OTggSGV3bGV0dC1QYWNr YXJkIENvbXBhbnkAAGRlc2MAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAA AAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAADzUQABAAAAARbMWFla IAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABi mQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9kZXNjAAAAAAAAABZJRUMgaHR0 cDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVz YwAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2Ug LSBzUkdCAAAAAAAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xv dXIgc3BhY2UgLSBzUkdCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAA LFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAA AAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYt Mi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2aWV3AAAAAAATpP4AFF8uABDP FAAD7cwABBMLAANcngAAAAFYWVogAAAAAABMCVYAUAAAAFcf521lYXMAAAAAAAAA AQAAAAAAAAAAAAAAAAAAAAAAAAKPAAAAAnNpZyAAAAAAQ1JUIGN1cnYAAAAAAAAE AAAAAAUACgAPABQAGQAeACMAKAAtADIANwA7AEAARQBKAE8AVABZAF4AYwBoAG0A cgB3AHwAgQCGAIsAkACVAJoAnwCkAKkArgCyALcAvADBAMYAywDQANUA2wDgAOUA 6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4AT4BRQFMAVIBWQFgAWcBbgF1AXwB gwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHpAfIB+gIDAgwCFAIdAiYCLwI4AkEC SwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLLAtUC4ALrAvUDAAMLAxYDIQMtAzgD QwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQGBBMEIAQtBDsESARVBGME cQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcFdwWGBZYFpgW1BcUF 1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUHBwcZBysHPQdPB2EH dAeGB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJEAklCToJ TwlkCXkJjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5C1EL aQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakN ww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQ YRB+EJsQuRDXEPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMT QxNjE4MTpBPFE+UUBhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkW bBaPFrIW1hb6Fx0XQRdlF4kXrhfSF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ 3RoEGioaURp3Gp4axRrsGxQbOxtjG4obshvaHAIcKhxSHHscoxzMHPUdHh1HHXAd mR3DHeweFh5AHmoelB6+HukfEx8+H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUh oSHOIfsiJyJVIoIiryLdIwojOCNmI5QjwiPwJB8kTSR8JKsk2iUJJTglaCWXJccl 9yYnJlcmhya3JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkGKTgpaymdKdAqAio1Kmgq myrPKwIrNitpK50r0SwFLDksbiyiLNctDC1BLXYtqy3hLhYuTC6CLrcu7i8kL1ov kS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJjMpsy1DMNM0YzfzO4M/E0KzRlNJ40 2DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5BTlCOX85vDn5OjY6 dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+4D8hP2E/oj/iQCNA ZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5FEkVVRZpF3kYiRmdG q0bwRzVHe0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkviTCpMcky6TQJN Sk2TTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNTX1OqU/ZU QlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1W0Vb lVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKcYvBj Q2OXY+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdr T2una/9sV2yvbQhtYG25bhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11z uHQUdHB0zHUodYV14XY+dpt2+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8 gXzhfUF9oX4BfmJ+wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeF q4YOhnKG14c7h5+IBIhpiM6JM4mZif6KZIrKizCLlov8jGOMyo0xjZiN/45mjs6P No+ekAaQbpDWkT+RqJIRknqS45NNk7aUIJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZ JJmQmfyaaJrVm0Kbr5wcnImc951kndKeQJ6unx2fi5/6oGmg2KFHobaiJqKWowaj dqPmpFakx6U4pammGqaLpv2nbqfgqFKoxKk3qamqHKqPqwKrdavprFys0K1Erbiu La6hrxavi7AAsHWw6rFgsdayS7LCszizrrQltJy1E7WKtgG2ebbwt2i34LhZuNG5 SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796v/XAcMDswWfB48JfwtvDWMPUxFHE zsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQ utE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp22vvbgNwF3Ird EN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3mlucf56noMui86Ubp 0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q09ML1UPXe9m32 +/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf///+4ADkFkb2JlAGTAAAAA Af/bAIQAAgICAgICAgICAgMCAgIDBAMCAgMEBQQEBAQEBQYFBQUFBQUGBgcHCAcH BgkJCgoJCQwMDAwMDAwMDAwMDAwMDAEDAwMFBAUJBgYJDQsJCw0PDg4ODg8PDAwM DAwPDwwMDAwMDA8MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgDDAG0 AwERAAIRAQMRAf/EAIMAAQEBAQEBAQEAAAAAAAAAAAABAgMEBQYJAQEBAQEAAAAA AAAAAAAAAAAAAQIEEAABAwEEBggFAgQGAgMBAQABABECAyExQRJRYXEiMkKBscHR UhMjBPCRYjNDoeHxgrJTcpKiwmNzJAXSkxRUdBEBAQAAAAAAAAAAAAAAAAAAABH/ 2gAMAwEAAhEDEQA/AP7PMV2uIYoDFAYoDFAYoDFAYoDFAYoDFAYoDFAYoDFAYoDF AYoDFAYoDFAYoDFAYoDFAYoDFAYoDFAYoDFAYoDFAYoDFAYoDFAYoDFAYoDFAYoD FAYoDFAYoDFAYoDFAYoDFAYoDFAYoDFBtkBkBkBkBkBkBkBkBkBkBkBkBkBkBkBk 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 EBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHn9wY5chDzN sRczcz4Mg+ZJyTmJJlbI+IYSZ/kEGDp2Em/puPSgwbMG0IMILGJlKMRzED5oP0QD AACwXIKgICAgICDSiCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICDjUqiG6N6ZuGAGk6kHiJMnJLvvSkcWxOoYDFBiQJstEncHFz2n9Ag8x2Pq GvAX9CDB+Cgyg9HtY5q9PUXPQg+4gICAgICAgICAgICAgICAgICAgICAgICAgICA gICAgICAgICAgICAgICAgICAgIPPUrZXjAjMOORujt7kHlOL47xzY/VPVoCCE6Sb N4k36pS16AgwdHQz/MP/AFFBxmMdNhPUfjBBxPyQZQe/2EXnOXhDfP8Agg+qgICA gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICCEiIJJYC8 lB5Z1TJgHhCVxHHL/CMNqDibNERDpjDb4pIIbL7G3jmtb6paToCDN2kN0kE/7j+i DJ6NDXizsH6lBzlo+YPx8FB5jZYgiD63sItSlLxS6kHuQEBAQEBAQEBAQEBAQEBA QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHKdUROSIz1PAO04IPNImZMiRPL fI2U4d5QS295b+PPPZoCDN2gZLHFsYah4pIJd9OW223K+J0yOhBk6GIaxsQ+D+I4 nBBk/wACNWjULhpKDmdnx8dpQeed+1BlB9z2sctCmNIf52oPQgICAgICAgIogICA gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgzKUYDNIsEHnnUkWd6UTwgcc tgwQcm5Mt9vkxNp1zkgX2vGWTm/HDYMSgN/i3/8APP8A+IQTW4GWwSiHEfpgMTrQ Q2fTkwvyk9cigwxub6coP+kHrKDJfa+I+QI6h80HOXR2fw7NqDzyvQZYoP0UY5Yx j4QB8kGkBAQEBAQEFVBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHC VZ3FJpNxVDZEdOKDi/Pmdr/cTu/kCCXWuYZ+Y21J7BggNyZb7fIibTrnJAd7Xicn N+OGwYlBNTS38Oee3QEEJ5nbLuiURYPpgMTrQZNn05bGFuUnAaZHSgydDDw5Xs/w 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 CAgICAgICAgICAgICASwJNwvQfJzEnNeSczf6m+Zig0LNbfrlNnzkUGtIMsCDLUL Zy6TYgukmOgyh/RDtKC/6yJXeOp3RQUat9pWf8lTTsCBYxc545t4i+pPQNQQXxGU mN1aoMPoigtrxAiBMD06eEB4pa0E3cptJpyLGXNVloGpBbc2GeI/kpDvQSxrjkkb Bz1Tr1ILa5LgSiN6fLTGga0GWDRjlLEvCkb5HxT1ID3nMZCRaUxfM+GOpBDi5Yxs lKN0R4I6yghsdxlYMQOUHkGs4oMl3uDuzYOLo7I3lBg4Na9z4vc+027EHKfwfjb+ qDt7GD1JzwiG+aD6qAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOVct RngSGHTYg+YDiL7xtvH6kIOgwy3hsm3hj2lBXDWB42EDTEFoj+Y2oNB3DHecgS+o 8Uv5bkANYxyjKcp8NPGW2SDXT5e7b/x0+8oFrhvTOWz/AI4adpQUcmUMfw0zgPHJ A3WxlAnpqy7kFcvImQE4j1KmFMeGOtBGDRGQsbadHGR8U0DxSz6qtb/bBAY7sRFi LadE3RHimgljEuZRkd6fNUOgakFuckiMohpyF1MeGOtBLmbcyhwDdTjpP1FBm5uR g4e+IN8j9RwQZIwy6Bk0A3R2m8oMm23id3bHA/O4IOMvnpbp/f8ARB9D2cMlHMb5 knowQetAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHk94WpAYmQboc9 iDwx1X8vZ1hBsMbrHuOhwwPREOg2CbCAxJBiNBIaI/ljagu630ZenID1yKDVtuYO XBnHTI8MNgxQX/W0v89TuCBZa++M1v8AyT0bAgpulmLh/VkOaWEI6kFtcvIRkBvz wpx0DWgngAhrpUj/AFzQHDSOYmJLVKovmfDHUgtrswE4jdjy0xpOtBLCMTCZu5qp 16AgEl5EyAIDVKgugPDHWglrgACJiHhA3QHilrQTQwJc5oCXMcZy1DBBHuYu5Mok 4kXzOoYIM7CRFiXxY3y2ywQZOL2Ne2DD/aLNqDmYmREQGJLNoP7diD7EYiMREXRD DoQVAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHg9+WjT/xIPFF7AL8 Dru62Qdgx/w9l5/0gfNBu93LEvmOh7ZnoFiCvjltcEQ1ngj0C0oKHsyyttEZ/wBc +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 H+GXWEHzUHpgQQHuN+zH9AUHcObyxLudDh5HoFiDWk5bN0mH9EO0oLbg0pZrCeap idkUAYZTp8uR/wBVQ9iCjlyWWHynwGMztQdqMBLLNiKcftRN5OMjtQepAQEBAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBxrw8ylOGJDx 2i5B8FB1pkBwbsfjY6D1C4va3FrYufnIsg3bp3nIEsM3PLoFgQWxvDHL/lp98kDT mDBh5kRgOWmNuKDpCBqSMZaXrnqgNQxQe1AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ EBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHwvcw8utMYEuOlBxiWkD80HsiTY3FY2 24fq5QdBlbTBukxBsG2RQatxGaWa0YSqYDZFAALxy7xc+WdMuaZ1DBB7oQEIiIwv Ok6UG0BAQEBAQEBAQEBAQEBAQEBAQEBBUUQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE BAQEBB8739N4wqDDdPTcg+Yg9VMuL2wfQ+PyzIO4JJDDecED6iN3/LG1BbGDEiOU tLEQxltkUHrowYeZINKQaMfDHAIO6AgICAgICAgICAgICAgICAgICAgICAgICAgI CAgICAgICAgICAgICAgICAgICAgICDnWh5lOcNIs24IPz6DrSN4N2J1Y/o6D1i45 rHfORovn2BB3pwM57wsiRKoNfLHoCD2oCAgICAgICAgICAgICAgICAgICAgICAgI CAgICAgICAgICAgICAgICAgICAgICAgICAg+H7qHl1pjCW8OlBxiWkHuxQeyJuJD myzSQbB0yP6IPp04eXARvN8jpJvKDaAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIPB7+DwjUF8Sx2FB8pB9D2gzzicIbx7P 1JQfUQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQc6sPMpzh4hZtQfnyCCQbCLwg+n/wCvuqHYOtB9FAQEBAQEBAQEBAQE BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQfE93TyVpN dPeHTeg9X/rzZVGjL2oPooCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA gICAgICAgICAgICAgICAgICAgICDw+/g9OMxfAsdhQcf/X8VTYEH1EBAQEBAQEBA QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBipAT hKB5gyD4/tpmlXiDYCcskH20BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQfF95DJWJF094dqD6lCp5tKE8WaW0IOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAg8XvoZqQmL4G3YUHD2FRpSpHm3o7cUH1EBAQEBAQEBAQEBAQEBAQEBAQEBAQE BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBmUROJjIOJBig+NKE/a14m8 AvGWkIPtAggEXG0IKgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC AgICAgICAgICAgICAgICAgIOdWlGrAwkNh0FBz9sZCBpT46JynZeEHoQEBAQEBAQ EBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBw Df8A6C1/l73zsQd0BAQEBAQEBAQEBAQEBAQEBAQEBAQf/9k= ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=h2-bg.gif Content-Type: image/gif; name=h2-bg.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/h2-bg.gif Content-Transfer-Encoding: Base64 R0lGODlhAQAdAMQAANbj7fP4/PL3+/H2+9vn8Pf6/t7p8tfk7vX4/fb6/eDr9PH2 +vX5/dnm7/f7/vX6/fj7/vD1+tjk7vb6/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAABAB0AAAUVIOQUU/IwSBAIwrBEikE0 B2DfthQCADs= ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=prevSlide.gif Content-Type: image/gif; name=prevSlide.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/prevSlide.gif Content-Transfer-Encoding: Base64 R0lGODlhGQAkAOYAADMzM+zs7O3t7T09PaioqEBAQKSkpOvr66GhoaCgoJ6enq2t rWFhYaOjo6WlpYGBgTg4ODU1NTc3Ny0tLTk5OZycnKKiounp6aampqurq2lpaZqa mjo6OjIyMqenp+Pj41hYWCcnJygoKE5OTlRUVEFBQTExMUVFRTQ0NJ2dnebm5k9P T0dHR5aWlpSUlIKCglxcXMPDw5ubm3x8fGhoaGNjY8vLy2pqamtra4aGho6Ojl5e XpGRkaysrGBgYHl5edXV1UtLS1JSUp+fn1ZWVpCQkOXl5UZGRo2NjXh4eJiYmLq6 ugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAZACQAAAf/gACCg4SFhoeIiYqGJQMF i4oSMw06kIgFNwZLBAUUAwOWgkcMDhkLDjU7DAyhBQweGA4Epgu1lhQ0CQa7DhgE BD0LlkkVBggIFg3KBrOQAzgbDUMJx8gWvpAoISQyCt4K1AiylhATKwoV6SkJuh6h ESYjSgkKPEEnIKzvE0JFBC2hDEEQAQLJi4CGJHTggLChw4cQI0Jq9AiiBBsCPkAs sEHABQGdPgVk8UBAAAECcvx48KDVgwAnTaJEectFTJQxT1qKccAkzJk4naXoCbNo UQHZQvg4YPQoUkjliAQ4QJXpyQDvTJC4AFPFiBMaWu6DYcQjxIEaPgCJqJChxLcI AgMBADs= ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=nextSlide.gif Content-Type: image/gif; name=nextSlide.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/nextSlide.gif Content-Transfer-Encoding: Base64 R0lGODlhGQAkAOYAADMzM+zs7Ovr66GhoT09PaioqEBAQKSkpKCgoKOjo62trZ6e noeHh6WlpWFhYTU1NTc3Nzg4ODk5OS0tLZycnOfn56urq6ampqKiopubmzIyMlhY WEZGRkFBQTo6Om1tbScnJ6enp+rq6igoKDExMTQ0NJCQkHx8fE9PT0VFRUtLS42N jdnZ2WhoaOXl5Wtra1BQUKysrOTk5IKCgnh4eIyMjFdXV5iYmF9fX8jIyGNjY2Rk ZF5eXkhISJqamrq6umpqao6Ojp2dnVRUVJGRkX5+fp+fn5aWltDQ0FJSUllZWU5O TgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAZACQAAAf/gACCg4SFhoeIiYqGBgQd i4tBCScQkIUEBBIGBT8HQAaWgw4OPDoNChYNDhyhAAqvqAUNFyEOoJYKMQUFFw0H vwgtEpYWBQcJyBgDAwcUNJa8GMrLCEYJPi8EkLLUC94LGUMgJZAhBwgIQhTrCygT EZYOGykqRAsIN0skD62DRwUmkkzg10/QjBUbRsArOMiDhkoMI0qcSFFio0cTXQRA ArEVJk0BKgQYcCsUAwZFagQQICAAgx6tWMoMQFMAg5KLWNLcuTPDMEgtefIUkMOS UKECEmhbdHSngB3jgDqdqeSdJQYfOMAQGUCEjX0MRYTEMTAiCxkfFE502LGiW0WB AQAAOw== ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=highlightPlay.gif Content-Type: image/gif; name=highlightPlay.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/highlightPlay.gif Content-Transfer-Encoding: Base64 R0lGODlhIwAkAPcAAF9eXYiIiLS0tNzc3CoqKquqqn9+fqChoJSUlE1NTcDAwL6/ vjQ0NK+wr9TV1GRlZGlpaZqbmpKSkqenpkxLS3d1dcTExNfX19LT04OCgu7u7pKQ kMjJyHx8fNra2tjY2Lm6upeXlicmJoaHhpCQkFFQUMfHx0JDQmtpaaOioh4dHZyd nGJhYVBQUEpLSs/Oz46Pjpqbnrq7uy0sLHJycmZlZZKPkq2srHp4eBoZGVtaWhYV FZeXlEZGRlRUVJSSkkBBQFJTUo6NjTo5OT8+PyMiIjc2NoiGhoWFhbi5uEpJSTg4 OEZERKmqqXd3dnV1dVxaWm9vbzAwMCUkJJGSkWdmZjs6OkRFRFBOTkJAQD48PHh5 eGtqamJjYoB/f0lISEdHSERDQy8uLj07O0A/PzMzM5ucm1dVVYGAgLGwsNDR0JOU k6WkpMnKya6vrjg3N729vVhWVmBeXpmamYmKidDQ0FZUVJ6fnsvLy7O0s7W2tYyN jFtZWcPDw6eopyYlJcrLytHR0crKyqSlpP39/c3Ozaeqq6WmpbKzsq+urqqrqq2u rbGxsfDw8HBuburq6o+Qj+Pj48vMy7a1tbe2tpqXmvb19nl3d6inp52enXt8e+Tk 5J+gn21sbGdoZ/v7+2VmZbCxsL28vFlaWcLDw/z8/Pz8/cHCwcLBwYOEg3+Af6al pZyamr2+vUNEQ3N0c7Szszc4N+jo5xgXF6SjozU1NZCOjoKBgZiXl8vNzEpHRePk 4peYl7/Av359fdjY15aVlayqrKipqKusqqupq3VzcysqKszLzDIyMjIzMjMyMicn J7m6uZmYmLu8u7i3t8/Qz1dXV4uKimhmZtnb2/Dy8/Py8oyLi0FBQZqYmIWGhCAg IKGjoEdIR+/w8MzNzEJCRENERObm5VVTU7y8vNbW1by9vD49PUVFRurr7DAvL3p6 efj4+DQzM25wb1lYWDs7PFNRUN3d3Tw8PDw7PGBhYOXm5iQjI8LCwjk3OcLDwjIx MS0tLfv7/C8sL3t6eiH5BAAAAAAALAAAAAAjACQAAAj/AMsIHEiwoMGDCA8m6BAA SYZbaCJKlOjF1zoaJRgkHLgklQkLrZ7BSkOypMlEBdjgOgIB3sYyXhSgEiXgBiY2 EwpMYMOzZ4oDrITgqFGiVkIKjChRSpQiGwIE1uwVYPVjg1Wrtq4ZgGBHCb2EEFZh otUsQIdLTj71S1dOAhocFeLG5XLGBRkjCTuFACbEQCcWcgAQsqRBHAZn6yCwACBH zhkKWYzwS1hF2hEDjuTEOXOm0aNN8i4cA8HtAYAzcUr0sCJFREIWGbxcQgGF85lI oevgsSCjibYa786UCPNmRpGEADr8KzatNucLgQRZgDPJkA1dWWqXOFGLwLaEOio8 /3H0gI9tPH3g6GkCzBW9dprtJCCz74+KhD5QQKgRnzN1RZWAcw4DLPARhx3xfDGE MSrMkpALcYwTDxYUVJgAMTEQMQYDfJRQIQVKMLGgCjvskNA5FPSAjRZDvPHGEGAw 4I8S57joohEMiDFFDiXehxADRAyhzAzL/DHFFMaoM8ORTN5TxDY8lrjDDBsxoI59 UUqp5ZZa/vFSGcgskyWXZOagApVfpqnmmmymGUQAeyGwxpx01ikBFTDQIYdRLw1B gjwDeOAABoGoYeihh0JTSBv4JBFCDy9B4sEAH2DwgiSCAPINIG106ikHH5ETyiB7 DJFQEHU44EAdHPShgALseP9TiAW9LGDrAq3AIUMeE8wxgg4JdQCIJBzowwwiDbhR iinV7NKKAMm6Ie0ifkQwwisAJDTCKaiYk4cwPx0wmDeyUJOLG4dwcsC6ZgTwRBdB JJSBDEnkocgBK5hhhmeg/fICKQ2YwYm+EhjARTSQIqSKHtD6cYe+ZuB2gW68DUPF HPlSockDLZCRkAGIMLLIIQ/rC5101FkXDxQrRADJFvW4YCpCmrixiCKDZAIxeuop wkM36ITx8Bx70DBKGMkktIUfEwxygBkRRGDGf5WA8UU4d2QSwRwIpOJJArEQkFAU ZvCCQJ4BBEBHMDFgw0Q4MOxBBx0NdQBBAkYsswx+ARhT4EQUnjzwACgJwJOPOxAI LngXAPhwAj96i41QLRB4okMLX4Rxwgk9uAAGNqCDDgQZVuyjt95SbDRPCVe8Afnp sMce+2QvMdCd7LjDbkzqbfZeUEAAOw== ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=highlightPause.gif Content-Type: image/gif; name=highlightPause.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/highlightPause.gif Content-Transfer-Encoding: Base64 R0lGODlhIwAkAPcAAEJCQqanpqOioh4dHVFQUF9fXtPT01NRURoaGru7uywsLEFB QU5OTWtpaXJycq2srEtKSltaWhYVFVRUVFJTUo+Pj46NjSMiIjc2NoiHh7i5uLW0 tGZkZCUkJDo5OXp4eDg4OEdFRXd3dnV1dSsqKm9vbzAwMBkZGWdmZjs6OlBOTj8+ PmtqaigoKGJjYoF/f2NhYUJAQD49PUtJSUlISC8vL0A/PzMzMycnJ1dVVZucm6Wk pLGwsMnKyYGAgNDR0Dg3N////2RlZJOUk66vrqChoHd1db6/vmBeXk1LS4mKiZqb moiIiDU1NVhWVpKQkDQ0NFZUVLGxseTk5MHBwb+/v5KSktnZ2bO0s15cXMrKypma mSYlJaSlpLy8vNjY2Keop8nJydvb20xLS2lpab29vc7OzoiJiH9+fp+gn5SVlKqr qvz8/K+uroyNjLe2tr6+vq+vr9DQ0PPz883NzW1sbHBubp6fnvLy8sDAwH5/fpaW lrKzsoSEhIOCgnl5eXx8fGloaHt8e4+Qj7Ozs66urq+wr+fn56SkpNbW1svMy3l3 d6GhoX18fGdoZ+np6ZOTk+/v78jJyKinp0ZGRkxKSq2urVxaWl9dXYaHhri3t728 vMHCwXh5eJSUlEVDQ1tZWbSzs8LDwpCQkMfHx6uqqjY1NSgnJ5aVldXV1TIyMjIz MpiXl5mYmIuKipqYmLm6ubCxsJGRkVVTU5COjt3e3VdXV6SjoyAgIMPEw7W2tZeY l5KRkTMyMsLBwX+Af5GSkc/Qz9HR0Tc4N7y9vMTExKalpTIxMXt6eoKBgaipqDU0 NKGgoImJic3OzYyLi4mIiJydnJ2enZKTkpOSknVzczw8PHN0cxgXF2BhYH5+fn9/ fyopKdra2kRFRGhmZpaXljw7O5eXl5eWlpWUlJWVlVlaWdzc3NTU1NTV1GRkZHZ0 dJuamsLCwsPDw4WEhIWFhYKDgoODgyQjI3h4eIOEg359fXx9fC0tLScmJoaGhoeG hqWmpZGQkMrLymVkZCH5BAAAAAAALAAAAAAjACQAAAj/AG8IHEiwoMGDCA8yAJTh nZ9kPiJKlPjC3h8HBKAkHAhCHqlicDSF4kGypMk2pXaw2hco3MYb2/L42rThwaQd OHPqFMCMnYUPHAg0SThGyps3bQS8IkeNV5AgT57geRS1H61naAJFmeESIRljk261 gtZokQgjT08YmSJGrREj61jkgGADQ8I641BZQFMHBhJMWdjMQZDlixnCmJAgyTEm BgZ8CVG42ofGDhInOTJHOnQihxYqCDLncEIgRAoT+RLC8PNiUYNLonNMuRK6DKHO ogl8AqLgQkIkjZBV+wZbdCI6nePww52ZAABT3HAljADXzj9QscNUCc1oT+jMURjY /zjGZUDCCQ0CobgcRbQXKaGtMMEd5QANDyQGYEsIwcmsAyokUckYSSRRCCInJNHH HwgIOEMI+A0ggQQJyTBGCAvI4AEQHHKIAAIegojBMjV0cMKE5iEExQoe9KLAKVx0 IOOMNM5zAS4ITDihAhtBUUN5J+oo5JBDcvHSDargkCORTE54wgA8HinllFRWKSUF TIhTjidDdOlll5BAYoUsFTRTwFAveTBKLedckYoBwvwg55xzBuNMD+1oAA4lLw3S jRhfGGCGIlr0YOihh0pCSi5exNKFGx4kRIEc6aAjhyTu5FHFEU8dccRUnsJRRgJY BLBFJhEkBIg/ioQhCix8GP9CBBFpEcHWCbMSYQkYS2RyTQEJ6cMJFcRgoYwARRSR hmAIpGFYs8kWocMZI7hAQULxJKABFmsUEY0O4G52gg6fIQAuuNPowYItfCL0iy4b GALGHefqMJu5to17LjCCCEGADQlpw4cUlvBD77nHjaucvjosMUgn2UAQKUKC6LpG F9LUq5253ZkL7hZuOGAOAKskRA8YAXQh7RJLgPueufKNu8QWatTjCAPDkJBQCTrs okYFSjBxhhJKHHiCEgsiEDQ895DBAAY4tHDeGXqIUIIjQmSd9YdbI6COCwVMAAA+ OOCgM0JNkOFIBATQAMDbC8Qtt9w2pHBM2WWbsJE1BHgbAwTZeAcuuOCQvQRFE9wM rjjeLZCgt5WQFxQQADs= ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=articleView-tabs-bg.gif Content-Type: image/gif; name=articleView-tabs-bg.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/articleView-tabs-bg.gif Content-Transfer-Encoding: Base64 R0lGODlh6AMdAMQAAPP5/fT5/dHm9vj7/tfq+Pj8/tPn99Ln9tbp+Nrr+fT6/djq +NXo97a24c/k9dTo9/X6/vX6//j8//X6/c/l9dDl9vb6/vf7/vb7/gAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAADoAx0AAAX/YCSOZGmeaKqubOu+cCzP dG3feK7vfO//wKBwSCwaj8ikcslUSZ7QqHRKrVqv2Kx2y+16v+CweEwum8/otHrN brvf8Lh8Tq/b7/j8tcDv+/+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2e n6ChoqOkpaaEA6mqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3O z9DR0tPU1dbX2Nna29zd3t/g4eLj5OXWF+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+ /wADChxIsKDBgwgTKlzIsKHDhxAjSoSHoaLFixgzatzIsaPHjyBDihxJsqTJkyhT /6pcybKly5cwY8qcSbOmzZs4c+rcybOnz58dLQgdSrSo0aNIkypdyrSp06dQo0qd SrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy1YphLdw48qdS7eu3bt48+rdy7ev 37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM9+dwLmz58+gQ4seTbq06dOo U6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry4cdIKkitfzry58+fQo0uf Tr269evYs2vfzr279+/gw4sfT768+fPo06tfz769+/fw48ufHz2A/fv48+vfz7+/ //8ABijggAQWaOCBCCao4P+CDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKOKI JJZo4okopqjiiiy26OKLMMYo44gA1GjjjTjmqOOOPPbo449ABinkkEQWaeSRSCap 5JJMNunkk1BGKeWUVFZp5ZVYZqnlllx26eWXYIYp5phklmnmmWimqeaabLbp5ptw xilmAnTWaeedeOap55589unnn4AGKuighBZq6KGIJqrooow26uijkEYq6aSUVmrp pZhmqummnHbqKZ8LhCrqqKSWauqpqKaq6qqsturqq7DGKuustNZq66245qrrrrz2 6uuvwAYr7LDEFmvsscgmq+yyqRLg7LPQRivttNRWa+3/tdhmq+223Hbr7bfghivu uOSWa+656Kar7rrstuvuu/DGK++89NZr7734WovAvvz26++/AAcs8MAEF2zwwQgn rPDCDDfs8MMQRyzxxBRXbPHFGGes8cYcd+zxxyCHLPLIJJc8MAMop6zyyiy37PLL MMcs88w012zzzTjnrPPOPPfs889ABy300EQXbfTRSCet9NJMN+3001BHLTXMD1Rt 9dVYZ6311lx37fXXYIct9thkl2322WinrfbabLft9ttwxy333HTXbffdeOet9958 9+33310bIPjghBdu+OGIJ6744ow37vjjkEcu+eSUV2755ZhnrvnmnHfu+eeghy76 /+ikl2766ainrvrqrCt+wOuwxy777LTXbvvtuOeu++689+7778AHL/zwxBdv/PHI J6/88sw37/zz0Ecv/fTUV2/99dhnf7sA3Hfv/ffghy/++OSXb/756Kev/vrst+/+ +/DHL//89Ndv//3456///vz37///AAygAAdIwAIa8IAITKACF8jABjrwgRCMoAQn SMEKWvCCGExgBTbIwQ568IMgDKEIR0jCEprwhChMoQpXyMIWuvCFMIyhDGdIwxra 8IY4zKEOd8jDHvrwh0AMohCHSMQijpACSEyiEpfIxCY68YlQjKIUp0jFKlrxiljM oha3yMUuevGLYAyjGMdIxpIymvGMaEyjGtfIxja68Y1wjKMcoeiAOtrxjnjMox73 yMc++vGPgAykIAdJyEIa8pCITKQiF8nIRjrykZCMpCQnSclKWvKSmMykJjfJyU56 8pN9bIAoR0nKUprylKhMpSpXycpWuvKVsIylLGdJy1ra8pa4zKUud8nLXvryl8AM pjCHScxiGvOYyEymMpfJTFWGAAA7 ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=articleView-tabs.gif Content-Type: image/gif; name=articleView-tabs.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/articleView-tabs.gif Content-Transfer-Encoding: Base64 R0lGODlh6ANPAPcAAP////v75e71+/j7/tHm9vP5/fT5/ba24fX6/tDl9trr+c/k 9fb6/tjq+NXo9/f7/vX6/dfq+NPn99bp+PT6/dTo99Ln9vb7/s/l9TVnmPj8//j8 /vX6/2aNsmqOrWuQs5+2waG4z5izzb3P4cnW5MbU0IakwYSit3+gwFB7pk56pU97 otXi7uHn2+Tr8aS8067C1qzAxl2Fp1qDrF2FrUJxnUFwn0Jxn9Pd1tfh6snZ5+7x 4OLs9PL1+HiauneYsnOWube34ZGsvJOuyIupxs3O67zM3bDG2vH0+7nKy7295Lq6 47m54f7+/u30+vv75rm54ri44bi54u/x+MfI6cjJ6e3w+cDA4e7w7u7w+vz86rq6 4by847+/4v3+/ufr8u3z+r294uzw+cvN68jJ5cPE5enr7Pv75/z86eXr9Ly84vv7 6O/x+ebr9e/x7tTY7uDj7/39/ubq9NPW7P398rq84uXn7drb7/X26e3w+ubr9sPD 5Ovu8e7w99TX7drb8NPX7t7f88HB5Nja7f398be54t7h78vM6r/A5AAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAADoA08AAAj/ADkIHEiwoMGDCBMqXMiw ocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMlSoYaXMGPKnEmzps2b OHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1qtWrWLPe3MC1q9evYMOK HUu2rNmzaNOqXcu2rdu3cOPKnUu3rt27ePPq3cu3r9+/gAMLHky4sGGyAxIrXsy4 sePHkCNLnky5suXLmDNr3sy5s+fPoEOLHk26tOnTqFOrXs26tevXsGPLnm0ZSREl B6IEOcC7t+/fwIMLH068uPHeSoogYWwbt+7j0KNLnw48+fLFzXPvps69u3fe1pnf /9b+vbx54+Gxj39+vr178Mppy59Pv779+/jz6y/9oP+DPEtA4UcbAhRo4IEIJqjg ggw26OCDB8oBCBRLiOEfgAISCOGGHHboYYISUmhhfxgO+OGJKKYY4YQVXhigiSrG KOODIbZI4osazqjjjgXWOKJ/QAYp5JBEFmnkkUgmqeSSTDbp5JNQRinllFRWaeWV WGap5ZZZXuDlBVUUkgYYPJa5oxN6SEHFl2GOaeabMaKpJptikgnnnR/KuaaXbdqJ 558Q6kmnm4AW2qCgXyaq6KKMNuroo5BGKumklFZq6aWYZqrpppx26umnoIYq6qik jsrAqQwEMYcThrbKoBNvBP+BqqqsumrrgbDKeiqtt/YqQK6zrurrrcDuKuywrhaL 6rLMNuvss9BGK+201FZr7bXYZqvtttx26+234IYr7rjklmsuuQiki8AByPp6gLrs tnvru+nGK6+r9K57r6352rtvofmqK/DABBds8MEIJ6zwwgw37PDDEEcs8cQUV2zx xRhnrPHGHHesMQQgQ+Dvv38eEPLIJN9pMsgop/zmyiK7DCjMLcvMI8wh56zzzjz3 7PPPQAct9NBEF2300UgnrfTSTDft9NNQRy311FRHTcHVFARhM54HYK311nB2ffXX YJspdtZlv+x12mZj7fbbcMct99x012333XjnrffefPf/7fffgAcu+OCEF2744Ygn nrgBjBtQM9spHtD445CfKDnjlFfu4eWOa64j55l7viHnjZdu+umop6766qy37vrr sMcu++y012777bjnrvvuvPfu++/ABx+66A+CTnyMxh8f+eTKL4958yiSHvz01Fdv /fXYZ6/99tx37/3uBYRfAOUiZKAiDzP0ykIGLyx4gPiPl59iBxnUT8SCKHSAYAco FMg/gusbwYbW174EvS98lOMBEOo3AxYYSgQq4Br8TiQCERgogimqn/0+pIL+bW6C HqrgBWNUvgyoQIAQ7NALMuBADh1QfDCMoQxnSMMa2vCGOMyhDnfIwx768IdADKIQ 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 xZnEJRvHfVzIjVzJnVzKrVzLvVzMzVyxCQgAOw== ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=rssbox.gif Content-Type: image/gif; name=rssbox.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/rssbox.gif Content-Transfer-Encoding: Base64 R0lGODlhXAAdAPcAAPT5/f///9Dl9hw/lOjy+/P5/fD3/NHl9t7t+fL4/enz+9nq +NPn99Tn9///7+fy+9vr+P///vH3/NXo99zr+P+QYf//tv9tI/+CHP+BHP++afxa HP9/Pf/Div93Iv+3X/+pdf/npP+MHuRuMP6QPf+zQv9sGf9cIv9/I/++a/6mOf+M N/hPIv//0f+WKP9qGeh4LPxpGv+UI/98MP+RI/h9NftQGf+mRv+UWP///P/IiOFi LPuWL/+UJf+bRuhfFf+DCf96HP90Kf+tW/+/Uv+QKv/GdOVgEf+6hv+RIv+JIP9z Kv+VJv+XKv+CJv9ZFv92Gv90Jf99Gf/+yv9vF//Cgv9qJv96O//Aaf+RGP+JQf+X PP+EKf+UH//Gg/9GJv9zMv//yP+XI/V0Rf/Ojv+ZOf+RFf94Mv+KSP+LGf//5P+k Pv/xwP+QHP+JIf+OJv91G9Lm9v9jG/9sFP5jMPNpH/+zXP96H/+vev+BKfxcEv90 F///8eqMH/ZfFv9yKf9+LP9aFP+DN/9oF/+DH//Osv9+KfxRGf+DKP+6aP+KHv+V Mf9oHP/AZP5hHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAABcAB0AAAj/AAMIHEiwoMGDCBMqXMiw ocOHECNKjFgAwQQBGDNq3Mixo8ePIEOKnICgwEEFCwgYAMCypcuXMGPKnEmzpk0D BBYoKFjgwEqbQIMKHVrTwAEABCEQIMq0qVOaDygQZJDgqdWrTBMwICgAq9evNQVw BUu2LEuxA7uaXYsVrUC1MqeAoSMECiIUS2ikEdSCLVu3AeDGPBNoDYY6eYCI6SGD C4mZAyIPcCm5ZWWYkZtOlglYMMwnYwYWEmEmC5MmUiBbZrl5tczWTGG/7EzTkBw8 OtgIBNGGkBInqlkLpxxc80zaM/tQqZJokRGBdjzs+VN8s2zZli9fZp05e/eYyGUG 89ESIUCEFCVyOEBj4gLk7QC+x8ce33X9+/db0z87dmaUOWV4IRAWQwTQgSODBIfd dZh5151kD9oHU3gxufDGB0T4wIcaNTgQxg4xKNggcS/pNyKJ+E3Yn0xdJCGQBo0E gAMZAWygR3Ul5qgjfta5ZiJnK8bEQwYCbaFCAEhUEMAMXxRX33bwSQjflFG6RCFM K7hRhCIcvMDIET/YcMgJfq115Ush3ADIHVfAYcUIfrAAgwVlmnVmnXgeN1VVefYp UwJxJLWUn4S6FBVBPf1UqJ9GIUUQSgRIsCieEuS0k0EVNSDSppx26qlHDZQ00aik lupQQAA7 ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=viewAbs.png Content-Type: image/png; name=viewAbs.png Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/viewAbs.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAFUAAAASCAYAAAAqqJKOAAAABGdBTUEAANbY1E9Y MgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAPoSURBVHja 7JhPSFRRFMavKYbikDSijDgkBEqSKAmBEhgKQaArMWilEBS1i3bhMtpVixZRBNmm wGilq6BIEIXAEAzCgcgYUQoHBENREDu/M+9Md2ySsZlcvQOPe+e+e8+f73zn3Jkp 2d3ddaEUV0p8UK89mW2R4aw85SE0B5IFeT48vtqxmQWqAPpMhuEQn4KAvSjAfj0S ADocAlqwNMvzkMmRYOHcQU431UcOzVNsHaa9AqXbB7XCfzMycMpdv3Aya/eD4XZ3 qTOuAd7qa/ovgfa21urji9qKVeV1vrK8VM/Ho5VF86mrKeraG6vz3V7lg5ol7+Z/ qCKcRGz+9tN3l1hed/cmEjoWHdTTdfr8qzTUVGriK46WFs2nofONriFacaAzZbkW 5xbX3JCMnc1R91YA7pRsJVMbLrW+7aQR6x4Dtq8jJuyoU9A59/z9oqzV69mbo3O6 9+7lVtm/oOepgGik3N15/TnLps8G5uj6zZYa1y86OT8xu+ymEymtlOHuRtXFOvph tbEb38Y/rmTm7CcWqwgEPa+mk25je0dtEgss5/OjN19c/5mY7sM2z+2X82oTXewh Vt9Pk5xM5QAGAROwMPgucGhsJplVGhjDMZwgQECD0ZzjPU6yjg4bTVc2S2vVQR7m vpBQkriwsq7MQacFzDpAA6z5xjg2s5Q5D3Nt34zExRxArLTN73RyEgL+d7e0upHR MR2cAQ8AJVbO41feTEUw3iVZHuyKK8iWkWRqM7MHI7xjTPe0Mg0Y5zDIeoPst3lF 0E72ZpegcHZ0clF19EpPNwYaqLCNByDaGo9J4n4owCQAX33fkoFN6/uAY+2qR85a ZSHHxU5nJO0/QBGP7d0IQEutb+kaI1UDo7GZi6X7gppWsq1BkCmM5ZLNrR0ts1x9 maCjkaNBaTarQ7l0WR+lTfhrflXYRaQ2gyQnXsxrm4FlALL6c3vfXqcMl8qiDcx9 W8u0i3wFPGgBsDvdayvVbt6gpmm/qk4YE/YKbCEg2AIzmmMRLRNj46AET3ZxJqNr MvUHUNa7CVR76olqXaNc/X7LSEJmFlI6b4pFskp8M7WTaSXoMH17hSrwq4t2BXtH BlrUT8CfmF3RmKzfIktSAW0yJyY/yQcCFTAx4N/0MJPPNtJfcBBAKTsM4QiP9qag JHPpshub/kVgVu44HZcbl3ckxxKGfuwZ0+PBrTwu4NslxJy9ToDzfbU2Yu/RQSU0 BO3q/njC9cgFxjuf8TCRJLG+FMRXI3P84i75629/+UX1VOZXwh9FBctP+XYUsdt/ KsSjKDKV+Uol6I7KMBpiUvAfKjfCv/7+919/oRRPfgkwAB2uXl9RhoJzAAAAAElF TkSuQmCC ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=downCit.png Content-Type: image/png; name=downCit.png Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/downCit.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAGwAAAASCAYAAAC+Tjt8AAAABGdBTUEAANbY1E9Y MgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAT5SURBVHja 7JlfaFt1FMd/bdPUhsUVEzYzOi0ILQ6Dw4LQIUwsCEL7VBzoiwXBoW/qm+6hgvrm kw/iEOxeFFbEh+5lQsaGI4FhJaWdo5FhS+LalEbTJjS2W6nnc3J/15v0z1JobQY5 8OP++d3f75zzPd9zzs1N0+bmpmnIoyM+78X5ixOn5PCiDH8DmrqRGRm3vn6nt8RF k80wCda3chhu4FO3QXtNgvZHsxOs4Uaw6lp6ZHzJSbNz46XDtuhkKGBOd3Uc2l6h oF/HfugO+FsOAqKz3h7W7p3pPhE0Hw50u9fJ2by5MjFv0rnVAwvYub5OV9dB7kUg z/Wd1OCsrm+IX/dMbGrRDJ/t0vkvrqR0rv+54+ZyIr2rHgLT1xMyqXtFF5sLQ8+a cdkTvPZZjngzbFvB4K9+uquGfTDYvS8MPEyBiO+++oyCS2AuXZ9VsJHRG7M6kL7u kOmPHnvofp3hgAa/ve2/jPr0hzvmmhDgf3lLrJZ0riQOFXR89mbUDPSeUCcxEmYR SFjMPea49/5oUtd+/kZUQJkxucK6gkSwLycyep5ZWlXwmAMk9q9m7lsvd2k2kAWJ mZyShz0uDJ3SedZyz2aR1ybWoGO7zGMdJPTKQG/EDIr92DH+67yeI9LkNVsyggN2 IzyDHwTdViGO1gf8shl2RgIPLtjN85euz1WsI+DYG0/lFEPWkuk8j50WP6801xJV C0D4iF+Zx6CU4Dg1G3Bj01lVjpHcQymA26NlHc8sFdeV4avrD9xS5BX2w3j2H4un XZ0Yj2OszRXWNEjIGScjYlNZnSutbezYX+KppS33EwKYLWn4CYC2PNo5zrEnFGwz rzjZZ0smR4LI8OrCj5n5gmsTVcqbnfjCWuxnDL4QcfWCb3WwHpphXiHtUXr66Q5l U8wJQGeoXRmJMzhGOekURtrzdqcBkwkYaQFiD+5ZNlf3GVhqs4d9ynqL0luOaTC9 wjz6bN8gmHsRgLFBhpx2vc0ab99DwgW/W4Hssbq/P991VI8EBRl3MtHaDjG81eEJ 2Ts2vahBxseEQ5pqqSnDYAsjOZdXh7w1O+D36T2ELMIgHCz3Pp8wJ6yMtc/UmtGs 9ZKFe5QuGM7e8R0c2k0ACHu8b3G1vNEBIkGE+bW+eJUcf+3+9rhT9lv7Pv5uyqQk KynBZN2eMswym96AofQS25MYnJdL0aKr8HWHocxRfsigxI29gYse2/RhNWQhezRj JXhkdU8k6AIBGwEVBlOCyOTtehgM5hn6ILZZIn70/dS2YMP8XHHNJQ1YQJicWasA n4xgzvtWCRb0L8og5/3R44rhbgGH6N2RYAVRq6VlZGQEMIbkPOrNmic7HlMwWn3N CshYPKMsX8j/o00YR8NOGttSdH9j07S2NJnJuWV9Lie9CgevJhcq9p2cXTYrpfuy vs0FvMnJ5ElxjkwGNILCnj/e+lOdzubXNIAR2ePadJkk6GDuLyGI/gZq8ylZFuTZ 25mVLaUvNV9UIJ6SZ5dLD8yY9B1sYe2KXLMmK7Y/HmhVPcsy9/OdcnDBgipS9iGv uhGeY+6Xu3+rzb+LDvT8ll5R/9F1W84pj/jj1aW/ip01zBG0o6KbCnI1ma2wX8j/ iX6aOn9x4hu5frvxQaGupShvrUHbw2428Kh7uem+dEjkRvnt2MCkrj/+vlfxtd75 CNz4e6U+g7X175WGPBryrwADAMfY9Ie9kVBHAAAAAElFTkSuQmCC ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=showAllThumbs.png Content-Type: image/png; name=showAllThumbs.png Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/showAllThumbs.png Content-Transfer-Encoding: Base64 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 ACBQ0k+WM4v1AAAAAElFTkSuQmCC ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=h2-bg2.gif Content-Type: image/gif; name=h2-bg2.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/h2-bg2.gif Content-Transfer-Encoding: Base64 R0lGODlhAQAdAMQAANHm9vj7/vP5/fT5/dXo99Pn99Ln9vX7/9rr+dDl9vT6/fb6 /tjq+M/k9c/l9dTo9/j8/tbp+PX6/vX6//X6/ff7/vb7/tfq+Pj8/wAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAABAB0AAAUY4DFhUBBU1iJRyjAIAsJc EfEUBgAkThMCADs= ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=issueNav.gif Content-Type: image/gif; name=issueNav.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/issueNav.gif Content-Transfer-Encoding: Base64 R0lGODlh0wBXAPcAAPb6/f///9Dl9hdQCLTT6HKs1ABrAApUpICn0Pv9/vX5/fH1 +fD1+v7//7XT6HSt1ANtA8zh8Oz0+jGIM/D0+PX5/MLb7fT5/cHb7PD2+oy83PP4 +jSJNo693e/1+vX6/eLu99Dk1p/IpJTBmN3r9eLu6Mfe7+v0+t7s9rbU6cbd7vD3 +5bB36jNrcHb7b3Y69vq9UOSRODt9uHt9qLI483h8PD1+ePv96TJ41qfXF2hX4W3 2rPTudzr4snf79Tm8pnEnoi52+Xw64u73Nbn83qyfSN/JIC02H+1g/P4/Mvg7+rz +ejy+Rp6G9zr9e71+9np3+Xw+FGaU7PT6M3i04W4iXyzgHev1XWu1e30+ujy7qXL qsvh0LnW6pTA33iw1u/2+7zX67HStubx+PT5/JzF4bXT6cXd7gZuBsDa7IK12cTd 7rfV6eny+dnp9O71+rXU6cng7/D39/L3/LnXvr/Z7AlwCUCQQZ3G4uTv9+vz+S6G MN/s9pbCm9fo89Hk8Yu8j06YULvX6vH3+9Xn8x18HtXm8wxyDMjfzdLl8imDKsPc 7dPm2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAADTAFcAAAj/AAMIHEiwoMGDCBMqXMiw ocOHECNKnEixYIMFAjJq3Mixo8ePIEOKHEmypMmTKFOqBLmgAUKMHioAmEmzps2b OHPq3Mmzp8+fQIMKHUrUZgUPAhYgFMCgqNOnUKNKnUqVJwMBSxVU3cq1q9evQRVg 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 d1+N2kGmlteiG/3oVUvrXJfO9KaLLSAAOw== ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=toc-h3-tl.gif Content-Type: image/gif; name=toc-h3-tl.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/toc-h3-tl.gif Content-Transfer-Encoding: Base64 R0lGODlhAwADAKIAAGmCuoOYx7zL6+72/I6izAAAAAAAAAAAACH5BAAAAAAALAAA AAADAAMAAAMGOBJCEAAkADs= ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=toc-h3-tr.gif Content-Type: image/gif; name=toc-h3-tr.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/toc-h3-tr.gif Content-Transfer-Encoding: Base64 R0lGODlhAwADAKIAAGmCuu72/IOYx7zL646izAAAAAAAAAAAACH5BAAAAAAALAAA AAADAAMAAAMGKBNADCIBADs= ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=gradient.gif Content-Type: image/gif; name=gradient.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/gradient.gif Content-Transfer-Encoding: Base64 R0lGODlhBQCCALMAAP////T09PX19fr6+v39/fj4+PPz8/b29vf39/n5+fv7+/7+ /vz8/AAAAAAAAAAAACH5BAAAAAAALAAAAAAFAIIAAARi0MhJq70y6M27/2DYCWRp nmiqmkfrvnAst0ht33iu10Xv/8CgsJcoGo/IpLI4aDqf0Kh0+lRYr9hslsHter9f gnhMLpvPaPJizW673YC4fE6v2+/4vH7P7/v/gIGCg4SFgBEAOw== ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=tray-bg-r.gif Content-Type: image/gif; name=tray-bg-r.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/tray-bg-r.gif Content-Transfer-Encoding: Base64 R0lGODlhBQDoA4AAAOTi4v///yH5BAAAAAAALAAAAAAFAOgDAAJZjI+pG3DgGpSw 2ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8YhMKpfMpvMJjUqn 1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6pgAAOw== ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=tray-bg-l.gif Content-Type: image/gif; name=tray-bg-l.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/tray-bg-l.gif Content-Transfer-Encoding: Base64 R0lGODlhBQDoA4AAAOTi4v///yH5BAAAAAAALAAAAAAFAOgDAAJZjI+pCNwGIoyN 2ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8YhMKpfMpvMJjUqn 1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6pgAAOw== ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=handle-bg.gif Content-Type: image/gif; name=handle-bg.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/handle-bg.gif Content-Transfer-Encoding: Base64 R0lGODlh6AMXALMAAP///+Ti4r/T465jLvr7/dnl79Ha47WKa8PT4N/p8QAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAADoAxcAAAT/EMhJq7046827/2AojmRp nmiqrmzrvnAsz3Rt33iu7zxGCL2gcEgsGo/IpHLJbDqf0KiMUEhIr9isdsvter/g sHh8ohoC5LR6zW673/C4fF4xB9D0vH7P7/v/gIFNdneChoeIiYqLjI1ZVAh3hY6U lZaXmJmagoSSm5+goaKjpKUznZ6mqqusra6vhlQHkrSwtre4ubq7RrIDtKm8wsPE xcbGvr/AeMfNzs/Q0YzJysDS19jZ2tte1NW13OHi4+TlMd7fwebr7O3u5ejpk+/0 9fb3uvHyzPj9/v8AKaFaZi2gwYMIE8IZSBCcwocQI0ocVOBMw4YTM2rcyHFKxYsX cgWIHEmypMmTKFOqXMmypcuXMGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMq XSrUIsinUKNKnUq1qtWrWLNq3cq1q9evYMOKHUu2rNmzaNOqXcu2rdu3cOPKnUu3 rt27ePPq3cu3r9+/gAMLHiw3AgA7 ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=previousFig.gif Content-Type: image/gif; name=previousFig.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/previousFig.gif Content-Transfer-Encoding: Base64 R0lGODlhQAAoAOZaAABrAGaZzCQrThdQCMvhy////2eazANsA8vT2n6nzy+DL7vM uyyCLNzc3drc2n+n0IWvha3C1jyKPMvUy7fH2Iar0ZOz0lOWU9PX3I+1j5e5l7PF 132rfQhvCHqkz8DM2dbZ3CqAKnClcIqyijmJOc/V29XY3G2jbdDW0KK71QpwCtrb 3XipeCR+JGqbzaG71HOgzhd3F3ejztDW23Kmcr3L2Hymz1GVUaG+obPIs8bRxq/D 1s3VzcnS2rDD17bH15S3lIexh5Gy0nShzqm/1sfQ2kmRSaa+1Yyv0UaPRrnKuZ+9 n8jR2qbBprbJthp4Go2v0myczWmbzMPQw9ja2AVuBaS81bvK2B97H4Wr0N3d3QAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAAFoALAAAAABAACgAAAf/gFqCg4SFhoeIiYqLjI2O j5CCPRsRNRiRmJmDGzABnp5QJZqjjBhIn6gBURGkrYYgHqmyR661WhaysgZFtqQI BrmyFYQCxQKYx5opsgUBzagGJoPJWtS9iRWpzc+pV9Pf1eHG4YLHxeXn5OTjgzao 28E74Ovm09TJ9eXq+YUJ2s65fthLR28cv4P79BUSwgxgKibzwFkT9+1eQoWDKAST NYSYIXwVE1q0GLGBjI2oiHgsdI+gNXwuDRIc9AEYygcrrpHy4WLjgxk6WyF4IEuK lQZBXTWgYCFBgiwvECSdSrWq1atYGSnJAAHHhKyZMsQAQJaskSlgHU1IUrYtABUQ v9IuQtHCrV0WchNdsGv3QI68hhYc4GtXAqEBiAdgUqxJhF0CACC3PcBjEGMtl69K cAtZstsllkNjHp14tCDFiE+nNm269KAQbTsTDiK6NWrLlxnfPs16dyEGnCPzBYJ7 te3SvpP35l3oxmPhbp3UFp2ZdOjcy5kP0kDY7pPDhnRfX44d+3QHWLq35QC+UG7j mXXDR258UJPB6hVQAXxoRIfuCujAHyILKGBXFTQ4MGAiDmhwAQMMkHDCAgtWmEkg ADs= ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=nextFig.gif Content-Type: image/gif; name=nextFig.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/nextFig.gif Content-Transfer-Encoding: Base64 R0lGODlhQAAoAOZYAABrAGaZzCQrTv///2eazANsA9rc2n6nz7vMu3+n0Nzc3S+D LyyCLMvT2q3C1jyKPJOz0oWvhcvUy4ar0VOWU9PX3I+1j7fH2Je5l7PF13ejzhd3 F6S81QpwCnqkz22jbQhvCHClcLDD11GVUcDM2bbH142v0s/V24exh5S3lH2rfdrb 3XOgztXY3LvK2GqbzbbJtr3L2K/D1hp4GsnS2oyv0XKmcsbRxqK71aa+1c3VzZGy 0iR+JMjR2qm/1qbBph97H0aPRsPQw2yczcfQ2oWr0DmJOdja2KG71HipeNDW0CqA KnShzqG+oZ+9n7PIs2mbzNbZ3IqyigVuBUmRSdDW27nKuXymz93d3QAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAAFgALAAAAABAACgAAAf/gFiCg4SFhoeIiYqLjI2O j5CCNBkOMRWRmJmDGSwBnp4mJ5qjjBU1n6gBQw6krYZRHqmyOa61WBCysgREtqQN BLmyE4QCxI3FrTiyAwHMqAQtgwLIWNSK1poTuczOny7S1YLI0+PS5NiRV8HcqDLg 5dTw4q4H282pJeDhxefx+qQ7lt1L1UMfv3CG/LW6EEwWE2PiDs7bN5GUAg0NUfmA OJFcxXHoIpEAljHBil6tRLxomKAKSlcNEsiCwkHBy1oKLkA4cKAIkgY3gwodSrSo 0UxWLERoIuGoJgsbAEiVSkWI00cSgkzdCqBDhKuMlPDgSjYJWEUUyJIt8OTsIQQF hNSSfcAR4aKQkUKQHQCA79YCOsz9u+bqgVq+fqc6eddx2sdzpJbIRbwVBWOKHRHi hcTgcF+uKQzug/zR1Yi9n7nCEC2xkEJSGOSSncHRsUKJmx8ZACJ7q4q6IMs1bvUj bu8FR9wikgJC9oIbyhMhWEB2ig0D0RUZwECBAQMjHxBkHz8qEAA7 ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=showThumbs.gif Content-Type: image/gif; name=showThumbs.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/showThumbs.gif Content-Transfer-Encoding: Base64 R0lGODlhdgAmAIABAK5jLv///yH5BAEAAAEALAAAAAB2ACYAAAL/jI+py+0Po5y0 2ouz3rz7D4biSJbmiaYPwAaAxsbu9VZvrRr4vOH79APmDruYr8WrBY9In8uolD2R U93NGiQ5dbyZkpvYeolJrlMMvmZPXzNZ3SWDx+7yWW6sr03X+hgeJkdH93XnVyio 0jcItyhoSHjYtYiYWCK1JTW5IBbV0naDiScaujd0ipqqusra6voKGys7S1tre4ub q7vL2+sLImMKARUnZFOcUsSBZmwhPFKkKVoWiNXmRTzlyWSVRMX2uAmq0CmeZj53 7qg4R/mHXG5YyWith+p+B4gQ/6beL0lvCL5++sJJGgfJ3SBk0JqMKkfOYB6E07w5 LPUro8aNEgygePwIMqTIkSRLPuOIMuWqAgA7 ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=hideThumbs.gif Content-Type: image/gif; name=hideThumbs.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/hideThumbs.gif Content-Transfer-Encoding: Base64 R0lGODlhdgAmAPeXADNmma5jLv///zVomq9lMPn6/NHZ4ezs7eTZ0ViBqryAV1uD q+3s7Lt/VFeAqc+jg8aXdtS2ofr6/Iakw7PD0/z9/f3+/r+JYnmZuay+0KO4zGaL sNe9qtrCsfr18unj3vL1+d/j55Ksx2OJr/j6+6W5zXGTtfv29PT3+buHY83W38iV ctzHuL+HYJiwx7BoNbp9UsvU3tW4o93IuuPm6dG/s8qZd8PQ3FJ8p+PXztje5MWW dHWXum+Steff2uLUykl2o/z5+PH09rBmM7+Qb+rh3K9lMrNuPsDM2da2odKxmrvJ 1+be16i7zk15pTZom86pj3aWt9GuljprnNGnifz6+LFqN+PVzI2pxmGHrcqaeMST cEJxoLDB0nqbvK6/0VaAqbqEYOnk4Nnh68/Y4OLk6NXAs+rm4zdpm1iAqdrg5caZ enucvUd0ord+VqG3z+zn5NvPyM+rks+rkW6RtLl+VLVyQmSJr7ZzRY+pw9a6pjxs nZSsxcKPa/X0897k6+Dk6tnAr7nI1rd3SdKoit7Mv+rr7MCUdoypxc6ojZ2zyeHn 7pKrxOrk4bh+VXqbvXKVuHeYuOHk6Ll6Tuzr6cORbbHB0+7u7gAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAAJcALAAAAAB2ACYAAAj/AC8JHEiwoMGDCBMqXMiw ocOHECNKnEixosWLGDM+zMEhwowPGkOKHHmJg50AKFFWYkKypUuHH/qknBnASoSX OHMOPDMp5ZE4RcLMlBIxAEGjl5AOVGqQZtKJTB0ajaoQwkwiEiqYMZKSwA+ITKkK FHt0KVSKZA0iIJAyBRwBAqqsmXkBbFmUY1Pmpap05lizNJH6Tap3b96nhNNCSVmn EVy4fg51FfMw8N++iDP/3fwUs+DLgM2W7awZ4YWUNQo8FmChzEwWlUdPBTxYdObZ oBHjJr15MO60AmGkdCNndRJHM2XEFr17d1PbzXXn5k39M+aEDWZuWf2AZqDlvW+L /x8t3nN489Otkze4Y6aN1VRoXgEvPbFgvAWv69b7uXPh6775B1wHM2mxGiEz4aHT giMxMEhKK3hwggdBdJeSEgxmqFEhbAU2kwKUaCjiRXq84CFKCvgw4ooVIaBAYEPM wQCLNE7EQAcQNNBAC4kgUOOPQAYp5JBEFkRGBhosEUKRTBKUQRsARBmlCTo0SWQI dEipJQB7aGBlkDTgICUXN4yRhZYuRAQAQWte0uZAbxq0pZsTxenQmnYqhIGWPWRl yRNSDhADRHHmKZChbMJZJ0WIGmTAAFLesQhcBXih5QaEJhrloVJymuebWh6q6JZt hupmp55ySuepjTIiZRp/rN4mRBSBSvIQqaKCuuquovZKp66l5jqqoon+yitCG0j5 hWqPWQCIloLcWiyeo5pK7K7UCrtqtsb2amq2jQoEhpQOiLDaGw5oWYK0xHLLrZzX uruttt3WG6yuCSWgJSSrTbBlF+x6i+3AxQ4MrMAH03tvwQZFouUjqyGypQoBz8tq qZsWhO+2nQb7K6r4fvtxuBRoycZqWGgJxJc0HuCElDyAgAIIJPgrpSK3kqrzzjz3 7PPPQKNqEBKQ9ryAISzX2MQUPC+gRtI/GrAAqWjwcQDUQB5AAQYJJDBCHgYgFBAA Ow== ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=articleContent-bg.gif Content-Type: image/gif; name=articleContent-bg.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/articleContent-bg.gif Content-Transfer-Encoding: Base64 R0lGODlhpAABAIAAANHm9v///yH5BAAAAAAALAAAAACkAAEAAAINhI+py+0Po5y0 roBDAQA7 ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=articleNav.gif Content-Type: image/gif; name=articleNav.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/articleNav.gif Content-Transfer-Encoding: Base64 R0lGODlh4wBXAPcAAPb6/f///9Dl9hdQCApUpLTT6HKs1ABrAICn0Pv9/vH1+fX5 /f7//7XT6HSt1ANtA8zh8Oz0+vD1+vD0+PX6/fT5/cLb7fX5/PD2+vP4+sHb7DSJ Nu30+TGIM4693Yy83O/1+tDk1uLu97bU6d7s9t3r9b3Y65TBmMbd7qjNrZ/IpODt 9vD3+8Hb7eHt9sfe7+Lu6Ov0+tvq9UOSRJbB312hX1qfXKTJ483h8OPv96LI4/D1 +bHSth18Htzr9Yi525nEnsjfzcng74W32rnW6imDKuvz+X+1g7/Z7JbCm+30+glw CYK12cXd7rnXvuXw+Mvh0OXw6+71+kCQQVGaU3Wu1QxyDNbn83iw1nev1Rp6G4u8 j6XLqubx+LXU6cDa7CN/JPH3+9Tm8sTd7rvX6urz+dfo8/L3/N/s9sPc7Yu73Nzr 4i6GMLzX6+/2+9Ll8rPT6J3G4u71+9np9HyzgNXm83qyfYW4iZTA38vg7+Tv99np 3/D39+jy+QZuBrfV6bPTufP4/E6YUNHk8fT5/IC02Ony+ejy7rXT6cnf79Xn85zF 4c3i09Pm2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAADjAFcAAAj/AAMIHEiwoMGDCBMqXMiw ocOHECNKnEixIgMFAjJq3Mixo8ePIEOKHEmypMmTKFOqXMlRAQOEGEFcAECzps2b OHPq3Mmzp8+fQIMKCBC0qNGjSG1eACFAAUIBEpJKnUq1qs+hVrNq/Slh6EEBC7aK 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 pwJ84BkXcQdRXHinT/3qP9dy2s2+9rdPuoAAADs= ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=articleNav-ASAP.gif Content-Type: image/gif; name=articleNav-ASAP.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/articleNav-ASAP.gif Content-Transfer-Encoding: Base64 R0lGODlh4wBXAPcAAPb6/f///9Dl9hdQCLTT6HKs1ABrAApUpICn0Pv9/vH1+fX5 /f7//7XT6HSt1ANtA8zh8Oz0+vD1+vD0+PX6/fT5/cLb7fX5/PD2+vP4+sHb7DSJ Nu30+TGIM4693Yy83O/1+tDk1uLu97bU6d7s9t3r9b3Y65TBmMbd7qjNrZ/IpODt 9vD3+8Hb7eHt9sfe7+Lu6Ov0+tvq9UOSRJbB312hX1qfXKTJ483h8OPv96LI4/D1 +bHSth18HgxyDPD39+jy7i6GMMng7+Tv97nW6pnEnn+1g7zX67/Z7O/2++30+glw CYK12cXd7gZuBuXw+Mvh0OXw6+71+kCQQVGaU3Wu1Z3G4rXT6Xev1Xiw1tHk8Xyz gHqyfcDa7Mnf74W4iYi52yN/JNTm8sTd7rvX6urz+dfo8/L3/N/s9oW32vH3+7fV 6evz+bnXvimDKujy+bPTuaXLqu71+9bn84u8j06YUM3i07XU6dXn89np38vg78jf zcPc7fT5/Ony+ZTA39np9Nzr9Rp6G9Xm84u73Nzr4pbCm5zF4ebx+PP4/IC02NLl 8rPT6NPm2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAADjAFcAAAj/AAMIHEiwoMGDCBMqXMiw ocOHECNKnEixIgMFAjJq3Mixo8ePIEOKHEmypMmTKFOqXMlRAQOEGEFcAECzps2b OHPq3Mmzp8+fQIMKCBC0qNGjSG1eACFAAUIBEpJKnUq1qs+hVrNq/Slh6EEBC7aK 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 ejsI34zL+ta7nraI+63sZ097ywUEADs= ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=gradient1.gif Content-Type: image/gif; name=gradient1.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/gradient1.gif Content-Transfer-Encoding: Base64 R0lGODlhAQB3AMQAAO/3/Pv9//r8/v3+//f7/vj7/vb7/vv8/vn7/vz9//z+//L4 /fD3/PH3/PT5/fX6/fn8/vL3/PP5/fb6/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAABAHcAAAU0ICCOZAkwaNNESys5zvNM Rm3XRK7rRe/3iKAQAYEIjkjkYck8BJ7QqDRBrSYU2KxiwO12QwA7 ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=rss.png Content-Type: image/png; name=rss.png Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/rss.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABGdBTUEAAK/INwWK 6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJDSURBVHja jJJNSBRhGMd/887MzrQxRSLbFuYhoUhEKsMo8paHUKFLdBDrUIdunvq4RdClOq8H b0FBSAVCUhFR1CGD/MrIJYqs1kLUXd382N356plZFOrUO/MMz/vO83+e93n+f+1z F+kQBoOQNLBJg0CTj7z/rvWjGbEOIwKp9O7WkhtQc/wMWrlIkP8Kc1lMS8eyFHpk po5SgWCCVO7Z5JARhuz1Qg29fh87u6/9VWL1/SPc4Qy6n8c0FehiXin6dcCQaylD MhqGz8ydS2hKkmxNkWxowWnuBLHK6G2C8X6UJkBlxUmNqLYyNbzF74QLDrgFgh9L LE0NsPKxjW1Hz2EdPIubsOFdH2HgbwAlC4S19dT13o+3pS+vcSfvUcq9YnbwA6mu W9hNpym/FWBxfh0CZkKGkPBZeJFhcWQAu6EN52QGZ/8prEKW+cdXq0039UiLXhUY zdjebOJQQI30UXp6mZn+Dtam32Afu0iyrgUvN0r+ZQbr8HncSpUVJfwRhBWC0hyG V8CxXBL5SWYf9sYBidYLIG2V87/ifVjTWAX6AlxeK2C0X8e58hOr/Qa2XJ3iLMWx B1h72tHs7bgryzHAN2o2gJorTrLxRHVazd0o4TXiyV2Yjs90uzauGvvppmqcLjwm bZ3V7BO2HOrBnbgrQRqWUgTZ5+Snx4WeKfzCCrmb3axODKNH+vvUyWjqyK4DiKQ0 eXSpFsgVvLJQWpH+xSpr4otg/HI0TR/t97cxTUS+QxIMRTLi/9ZYJPI/AgwAoc3W 7ZrqR2IAAAAASUVORK5CYII= ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=pubsNav.gif Content-Type: image/gif; name=pubsNav.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/pubsNav.gif Content-Transfer-Encoding: Base64 R0lGODlh6AM8APcAAOnt9Bw/lKKw00llqVt0sYeZxh0/lEhkqEZipkNfox8/lCI/ lEFdoTpWmj5anixIlClFlDNPlDBMlCZClDdTl////wAAAImbx8DK4Xx+gquus8rN 0x8gIT4/QYyOkl1fYhAQEC8vMWB7s7q+w9nd5G1vck5PUfHz+OTo8eLm8Zueo4ea xpGgxuPn8WJ3sY2cxmR5sU5mosjP4qm11EZeopKhxmyBs4WVv8fO4khgomd8sUxk oml+sdTZ6o6dxpSjyMrR4/Hy+ENbosnQ4n+Pv/L0+FxyqWB4tIuaxlJqpXCHvJKj y+fr86Gw0mB0sdbd6x5BldLa6ShJmrvG36Oy032Ov8bN4qiz1GN9tD5do6SmqzhY pK251GF7s2F8s2J8tNfd6tbc6piny6KvzoOUv0Fbm6y31F91rK+61au21G+DtYCR v7rD24eYwTdRmzRPm8XN4nWIuJqpzbjB2+Xo8lFoqaWorVRqqXGGuNXa6kRenpal yVhwq9Ta6pqnzbfA2/L0+ZuozTpUm/X3+jRTn3KFuGV7sXSIullwqae11tbb6neK uGR4tJ2qzZ6rzeXp8j5Ym1Rtp7nC2+bp8rzG3KOw0FZtqY2ex4ucxWyAs1pzrsrS 5MzT5W6BuNjd6xQUFbvE26Wy1E5op3CDuNnf7MzU5omawsDJ4RITEyYnKHqMuk1o q8LL4sHK4UlKTb7I4Km21qy42PDy+O/x96a01VlysKCtzUdhodje7GZ+t7/I32N7 tYOWxEpjokFan0xmpMPM4pmoz7K92FhxsD5Yn0JfplBpp/Dy97C71zZTn0Ren0tl pEdgn4udyIqcyH2Rwqeqr5qpz0pmqaaz05WlzamssVRtq3OGtiJElzlTn1VvrjpY omR8tlJsqlZwrjxVn3eLvJ+t0ml9s9zg7bO+2aey1GV5szc4OYCTwHuPvtHX58XO 4+/y93qNvWJ3s93i7dvg7XmNvnSJuaWy0u3w9sTM4md9tO7w9niLu3yOvMLL4Wd7 s9zh7cPP38TN4n2RwSH5BAAAAAAALAAAAADoAzwAAAj/ACsMYhVLgMGDCBMqXMiw ocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuXMA2GejWowglY MXPq3Mmzp8+fQIMKHUq0qNGjSJOWTCSr1UFeuwhInUq1qtWrWLNq3cq1q9evYMOK HUu2rNmzaNOqXcu2rdu3cOPKnUu3rt27ePPq3as3V7ODpxIZfDagsOHDiBMrXsy4 sePHkCNLnky5suXLmDNr3sy5s+fPoEOLHk26tOnTqFOrXs26tevXA6Q5M0jroDbY uHPr3s27t+/fwIMLH068uPHjyEFzU5i8ufPn0KNLn069uvXr2LNfrsVcu/fv4MOL /x9Pvrz58+gLc094oL379/Djy59Pv779+/jz69/Pv7///wAGKOCABBZo4IEIJqjg ggw26OCDEEYo4YQUVmjhhe4NoxACHHbo4YcgIhDPOrP8E+KJKKao4oostujiizDG KOOMNNZo44045qjjjjz26OOPQAYp5JBEFmnkkUgmqWSS3iiUwJNQRinllOD4U0EF s6Qz5ZZcdunll2CGKeaYZJZp5plopqnmmmy26eabcMYp55x01mnnnXjmqeeefPbp 5593WqMQA4QWauihh4IDzJVXztIOopAaukWklMpRAaWYZlqoHJNoKgopkZbCaAXk aFropKYycAijpNiTKgOTyP/xKqWovkqKKKlecumsmIpagayIrnolIJekKgqxvCZr aq2arqqJoZwyoKuym3ZKbarMmnortFdOcoi0gFw5DaKAbArsrJpU8O212Ca7LQPp rstuoaWUUmis1GY7L6HojEtotPsum6qzhOr6bLAVHBzwwgw37PDDEEcccTcKOWDx xRhnjLE8+ox65TH4aCzyxViMbLIYFZis8soXi/EIyygbojImFcjMssUl3+wAHhXw 4QAunOjswCNiCG1yzjobUkHRJnPCNM1GqywGIHwYErTGPOPhgDAVLHPzMoBgEvXY NyPNMs8+t/wy1GRb7HLbQpvNstJMOzAPIFpjUvQjuIz/rLTNuggzNh8VaA23znLP vbTFhBtuNB+4OH4xJ1cPXXfUiR9usS6AqK2zGJWTnbnIaFtMc9oZl6756qy37vrr sMcu+9jGKNTA7bjnrjvucajjMaPHxLH78Ld/Qfzxe1Rw/PLM474HHc17Qkcly9Ox SfO5G499A2pUEEkDz2/fAB17iH+89ttXQocny1dQfgOmKG/+8chcDz4yu3evBvcV 7D///wA8n/i6973dxS+ACPwf+rCnPvY14Bbu050nqDc8UxSBercoggPNF4n+JXB7 C2Tg+m7XQf+ZT3+724T9xvc+BX5wdxCkQz5uFz7sqTCBITweAW8XvwLqbocvDKIQ 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 2932vndK8q1vfvdb4PLW9/++B57nf9f74L9OOMAXfuaGK/zhfIk4vI1d8YJnXOMb 53jHPf5xkIdc5CMneclNfvKTE+KSAWB5y5ew6CW0XOYvn7iiYy5zltP84DfHuc5r /vM183zmQA86znNOdEgLvedIH4vSh850lDjd5caWutGtfnWsZ13rW+d6173+dbCH XexjJzvZVW48o0thCoSeghSsrnao37ntb1/7wOee9rrHXe8quTvO4b53vvRd5n8H vJ0F7/e86/3wg0880RffcsLn+vFlp3zlLX95zGde85tv+dmnZXUoKIEKGCB96U1/ etSjvh9UUAIUsB760ade9rOnfe1tf3vbs971V4c97n3///vS6/71ogd+8Y1/fOQn //bC5z3xlf/85zMf9M6HfvWtP/vWa7331+f+6aXf/Nh33/rfn374xW968nNe/etn f/vd/36Wex442IB//e1/f/znX//753///f9/AAxAARxAAixAAzxA/NsG4EiE31gF BHxACIxACZxACqxAC7xADMxADdxADgS7I/gNWmiF3wiGYuhAEzxBFExBFVxBFmxB F3xBGPS/VQiH3ziFE4AF4KCGAthBHuxBH/xBIAxCIRxCIixCIzxCJExCJVxCJmxC J3xCKIxCKZxCKqxCK7xCLMxCLdxCLuxCL/xCMAxDMRxDMhzDaFhAWaiAQWCFWLgk Qjd8QziMQzmcQzqsQzu8QzzMQz3cQz7sQz/8Q0AMREEcREIsREM8RERMREVcREZs REd8REiMREmcRDwMhVcYhAoICAA7 ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=journalNav.gif Content-Type: image/gif; name=journalNav.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/journalNav.gif Content-Transfer-Encoding: Base64 R0lGODlh6AM8APcAAHGGuSxIlEFbm3x+gjdTl7nC27q+w7K92E1lonWIucDK4ThY pJqozdfd6lJqpaGuzpiny8TGzZSVmJueoxAQECZClOLm7YyOktje7Ehgor3BymR5 seXo8tLa6YuaxoSEhm1vcnFxcqSmq2B4tPL0+JalyWtqa8rN07W7yNTa6t3h7I2c xqWorVhwqqKrwbfB22B7s2Z9tW2CuYudyGRkZHuKszRPm+7w9pKhxp6rzdHU2qe1 1penzWN8tGyBs05prOnt9Gh7q2l+sXOGts7R1nmNvn6Swl1cXOfr85ulvlVtqbzG 3ENbosXN4rm+yjdRmzRTnxw/lD9epMDJ4aGipqKw083P0sfKz0llqVlysI2Zuktj opOfvFhtpXGCr7Gzt9vf5Xt7fMrM0bO5x6mwxDpUm4COtVt0sYmZxipGlIeZxjJN l0hkqB0/lB8/lEZipkNfoyI/lDpWmkFdoT5anitGl////4mbxwAAADNPlClFlDBM lB8gIT4/Qauus11fYi8vMdnd5OTo8fHz+OLm8U5PUePn8Y6dxpSjyJGgxn+Pv9TZ 6oWVv8fO4tHS06y31FhXV6251Gd8sUZeocrR42J3sYCRv4OUv2B0sVxyqcbN4sjP 4snQ4oeYwaiz1H2Ov6m11K+61VRqqYeaxqu21PHy+KGw0j5Ym8zT5dbb6szU5m+D tmF8s2R4tOXp8vX3+lFoqVpzrl91rLvG3x5Blejs88rS5ChJmpKjy4ucxaOy08LL 4r7I4ElKTaWy1Ky42EtlpEdhobvE23qMuomawiYnKI2eyPDy+Km21pCfx5Ojx4+e x05op3yOvaOw0IaZxjJRnr/I30pmqUdfn+/x95+t0jlTnztUnVVvroOWxExmpH6R vlZwriJElzxVn62vs6mssVJsqj5Ynzc4ObG3x6az04WStmBfYIiVtouXuWJ3s0Rb n+bp8DxWmm6AroeUuHeKudHX58vO1MLL4eHl8cPM4uLl8dXY3qiqr8XO43mIsqqs sNjb4tnd4ypFlydEliH5BAAAAAAALAAAAADoAzwAAAj/AO282vWrisGDCBMqXMiw ocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuXMA364vXKziBk MXPq3Mmzp8+fQIMKHUq0qNGjSJOW3HFMwcFsPc5InUq1qtWrWLNq3cq1q9evYMOK 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 nuAKvuAM3uAO/uDP/QPVYBBTcBMHUQJqkOEavuEc3uEe/uEgHuIiPuIkXuImfuIo nuIqvuIs3uIu/uIwHuMyPuM0XuM2fuM4nuM6vuM83uM+/uNAHuRCHuQMMN/HIBAE oRRKvuRM3uRO/uRQHuVSPuVUXuVWfhEzURNIXhBX3uVe/uVgHuZiPuZkXuZmfuZV kOU2gRNo3uZu/uZwHudyPud0XudHwRQEXgVQwRd83ud+/ueAHuiCPuiEXuiGfuiI /57oir7ojL4XfgEYtUEY6THplF7pln7pmJ7pmr7pwSEbAn4Qt6EYIzAKd1Dqpn7q qJ7qqD4KI8AYI6DqsB7rsj7rtF7rtn7ruJ7rd9DqiTHquv7rwB7stl4EP+AYvi7s yJ7suk7soq7szv7ssM7rhfHq0F7t1r7rh0Ht177t3N7tsS7tiHHs3j7utM7svU7u wQ7unL4cCbEYpgAE8B7v8j7v9F7v8G4KivHu9r7v/N7v/v7vAB/wAj/w+47vh6Hv BJ/wCr/wAR8PMcAYCM/wEj/xCe/wiBHxFJ/xGk/vBo/xG//xH9/xID/yJF/yA2/w B2/yKl/xD5/yKy/xKM/pGv9yEIoxCiQ/Cohh8y+/8zzP8DhfGDrf80IP8B1Q7IkR 9EOf9PNe9IaB9Eo/9KPg9E+f9FE/9VZ/9fL+80CP9ULP9FvP9f2u9Zs+8wYhHx1A 8h0AH2cP9mxf8mnfHmvf9klvBGYv9z1P93Bv9yrfAXGv9ybP934f+CD/9nkv+COP 92zQ94FP+BjS+PJB9lUQIkgA8ODQCxQgAgCPBB8y+Ybf+QGv+RzC+Z5v8jwQIqNP 8qUf+qef8Ugg+qtP8a3/+rLv76DPIbM/8an/Bq4f+LW/JL6PIk2SEFtC+b2AB3hw +QAvJbe//FCy/B/PA1ASJ86P+80//dZ//djP81GS/QL/D/1PcvqNEv5o8igJ0Sn/ jg/Fb/zHj/n+Tin77gfqDwgGkPR8MAAEPwB4UPIDwAcTDxBzBAIhWNAgwQF4Di5k aDAhHjyFTjTkM+AgngsI+Sy8oLAhQz5/PgLhIXBOD5MjCQYqBBHQRJUxZRYcsHHm zYMlB34cYJGgTYZ9RC6siZMjnolCjS4FcgKQSwMN/SAlqNSonz40PTLl2tDAUzyA Gv7JetPqx0AUMi59WHYhRIggzA7titPknI9fXY51y/TsyKkw6xrUiVcloEAET+Dx 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 ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=script.js Content-Type: application/x-javascript; charset=UTF-8; name=script.js Content-Location: http://pubs.acs.org/templates/jsp/script.js Content-Transfer-Encoding: Base64 LyogZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCBmcm9tIGRvY3VtZW50Lm9u bG9hZCBldmVudAogKiBtYWluIGV2ZW50IGhhbmRsaW5nLCBmb3IgYWxsIHBhZ2Vz ICovCmZ1bmN0aW9uIHByZWxvYWQoKSB7Cglsb2FkKCk7Cn0KZnVuY3Rpb24gcHJl dW5sb2FkKCkgewoJdW5sb2FkKCk7Cn0KCi8qIGZ1bmN0aW9uIHRoYXQgd2lsbCBi ZSBjYWxsZWQgZnJvbSBkb2N1bWVudC5vbmxvYWQgZXZlbnQKICogb3ZlcnJpZGUg dGhpcyBmdW5jdGlvbiB0byBkbyBpbmRpdmlkdWFsIG9ubG9hZCBldmVudCAqLwpm dW5jdGlvbiBsb2FkKCkKewp9CmZ1bmN0aW9uIHVubG9hZCgpCnsKfQoKLyoqCiAq IENoYW5nZSB0aGUgZm9yZWNvbG9yIG9mIHRoZSBlbGVtZW50IHdpdGggaWQgZWlk CiAqIHRvIHRoZSBjb2xvciBzcGVjaWZpZWQgYnkgY29sb3IKICovCmZ1bmN0aW9u IGNoYW5nZUZvcmVncm91bmRDb2xvcihlaWQsIGNvbG9yKSB7CiAgICBpZihkb2N1 bWVudC5nZXRFbGVtZW50QnlJZCAmJiAoZWxlbT1kb2N1bWVudC5nZXRFbGVtZW50 QnlJZChlaWQpKSkKICAgICAgICBlbGVtLnN0eWxlLmNvbG9yPWNvbG9yOwp9Cgov KioKICogU2hvcnRoYW5kIGZvciBpZCdpbmcgZWxlbWVudHMKICovCmlmICh0eXBl b2YgJCA9PSAidW5kZWZpbmVkIikgJCA9IGZ1bmN0aW9uKGlkKSB7IHJldHVybiBk b2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7IH0gICAvLyBkbyBub3Qgb3ZlcnJp ZGUgaWYgYWxyZWFkeSBkZWZpbmVkIGJ5IHByb3RvdHlwZQoKLyoqCWNjYyByaWdo dHMgbGluayAqLwpmdW5jdGlvbiBSaWdodHNsaW5rUG9wVXAoYVB1Ymxpc2hlciwg YVB1YmxpY2F0aW9uLCBhVGl0bGUsIGFEYXRlLCBhQXV0aG9yLCBhQ29udGVudElk LCBhQ29weXJpZ2h0LCBhVm9sdW1lLCBhSXNzdWUsIGFTdGFydFBhZ2UsIGFFbmRQ YWdlLCBhSXNzbiwgYU9yZGVyQmVhblJlc2V0LCBhQ29sb3IpCnsKCXZhciBsb2Nh dGlvbiA9CgkJIj9wdWJsaXNoZXJOYW1lPSIgKyBhUHVibGlzaGVyCgkJKyAiJnB1 YmxpY2F0aW9uPSIgKyBhUHVibGljYXRpb24KCQkrICImdGl0bGU9IiArIGFUaXRs ZQoJCSsgIiZwdWJsaWNhdGlvbkRhdGU9IiArIGFEYXRlCgkJKyAiJmF1dGhvcj0i ICsgYUF1dGhvcgoJCSsgIiZjb250ZW50SUQ9IiArIGFDb250ZW50SWQKCQkrICIm Y29weXJpZ2h0PSIgKyBhQ29weXJpZ2h0CgkJKyAiJnN0YXJ0UGFnZT0iICsgYVN0 YXJ0UGFnZQoJCSsgIiZlbmRQYWdlPSIgKyBhRW5kUGFnZTsKCWlmIChhVm9sdW1l ICE9IG51bGwpIHsKCQlsb2NhdGlvbiArPSAiJnZvbHVtZU51bT0iICsgYVZvbHVt ZTsKCX0KCWlmIChhSXNzdWUgIT0gbnVsbCkgewoJCWxvY2F0aW9uICs9ICImaXNz dWVOdW09IiArIGFJc3N1ZTsKCX0KCWlmIChhSXNzbiAhPSBudWxsKSB7CgkJbG9j YXRpb24gKz0gIiZpc3NuPSIgKyBhSXNzbjsKCX0KCWlmIChhT3JkZXJCZWFuUmVz ZXQgIT0gbnVsbCkgewoJCWxvY2F0aW9uICs9ICImb3JkZXJCZWFuUmVzZXQ9IiAr IGFPcmRlckJlYW5SZXNldDsKCX0KICAgIGlmIChhQ29sb3IgIT0gbnVsbCl7CiAg ICAgICAgbG9jYXRpb24gKz0gIiZjb2xvcj0iICsgYUNvbG9yOwogICAgfQoKCXZh ciBsaW5rID0gIi9zZXJ2bGV0L2xpbmtvdXQ/dHlwZT1yaWdodHNsaW5rJnVybD0i ICsgZXNjYXBlKGxvY2F0aW9uKTsKCXZhciB3aW5wcm9wcyA9ICJsb2NhdGlvbj1u byx0b29sYmFyPW5vLGRpcmVjdG9yaWVzPW5vLHN0YXR1cz1ubyxtZW51YmFyPW5v LHNjcm9sbGJhcnM9eWVzLHJlc2l6YWJsZT15ZXMsd2lkdGg9NjUwLGhlaWdodD01 NTAiOwoJUG9wVXAgPSB3aW5kb3cub3BlbihsaW5rLCAnUmlnaHRzbGluaycsIHdp bnByb3BzKTsKfQoKCi8qIEZ1bmN0aW9uIHRvIGxvYWQgaW1hZ2VzLgogKglub3Rl OiBtYWtlIHRoaXMgZW1wdHkgbWV0aG9kIHNvIHRoYXQKICogMSkgbWluaW5pemUg Y29kZSBjaGFuZ2VzOyAyKSBmb3IgZnV0dXJlIGludGVncmF0aW9uOyAzKSBlYXNp ZXIgdG8gdGFrZSB0aGUgZmVhdHVyZSBiYWNrCiAqLwpmdW5jdGlvbiBNTV9wcmVs b2FkSW1hZ2VzKCkgewp9CgpmdW5jdGlvbiBNTV9zd2FwSW1nUmVzdG9yZSgpIHsK fQoKZnVuY3Rpb24gTU1fZmluZE9iaihuLCBkKSB7Cn0KCmZ1bmN0aW9uIE1NX3N3 YXBJbWFnZSgpIHsKfQoKZnVuY3Rpb24gbWVudU1vdXNlT3Zlcih0eXBlLCBhY3R1 YWxUeXBlKSB7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnTWVudUl0ZW1f Jyt0eXBlKS5jbGFzc05hbWU9J01lbnVJdGVtT3Zlcl8nKyh0eXBlID09IGFjdHVh bFR5cGUpOwp9CmZ1bmN0aW9uIG1lbnVNb3VzZU91dCh0eXBlLCBhY3R1YWxUeXBl KSB7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnTWVudUl0ZW1fJyt0eXBl KS5jbGFzc05hbWU9J01lbnVJdGVtXycrKHR5cGUgPT0gYWN0dWFsVHlwZSk7Cn0K ZnVuY3Rpb24gbWVudUNsaWNrKHR5cGUpIHsKICAgIGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCdNZW51TGlua18nK3R5cGUpLmNsaWNrKCk7Cn0KCi8vIGJyb3dzZXIg ZGV0ZWN0aW9uCmZ1bmN0aW9uIGJyb3dzZXJDaGVjaygpIHsKICAgIHRoaXMubnM0 ID0gKGRvY3VtZW50LmxheWVycyk/IHRydWU6ZmFsc2U7CiAgICB0aGlzLmllID0g KGRvY3VtZW50LmFsbCYmKCF3aW5kb3cub3BlcmEpKT8gdHJ1ZTpmYWxzZTsKICAg IHRoaXMuZG9tID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKT8gdHJ1ZTpmYWxz ZTsKICAgIHRoaXMubnM2ID0gKHdpbmRvdy5zaWRlYmFyKT8gdHJ1ZTpmYWxzZTsK ICAgIHRoaXMubW96ID0gKHdpbmRvdy5zaWRlYmFyfHxuYXZpZ2F0b3IudXNlckFn ZW50LmluZGV4T2YoJ0dlY2tvJykhPS0xKT8gdHJ1ZTpmYWxzZTsKICAgIHRoaXMu b3BlcmEgPSAod2luZG93Lm9wZXJhKT8gdHJ1ZTpmYWxzZTsKICAgIHRoaXMubWFj ID0gKG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignTWFjJykhPS0xKT8gdHJ1 ZTpmYWxzZTsKfQpicm93c2VyID0gbmV3IGJyb3dzZXJDaGVjaygpOwp2YXIgT2Jq OwoKLy8gbXVsdGlicm93c2VyIGdldCBvYmplY3QgYnkgaWQsIGluIE5ONCB5b3Ug Y2Fubm90IGFjY2VzcyBhbGwgb2JqZWN0ICh0ZXN0IGl0IGZpcnN0KQpmdW5jdGlv biBnZXRPYmplY3RCeU5hbWUobmFtZU9mT2JqZWN0KXsKCU9iaiA9IG51bGw7Cglp ZiAoYnJvd3Nlci5pZSkgT2JqID0gZG9jdW1lbnQuYWxsW25hbWVPZk9iamVjdF0K CWVsc2UgaWYgKGJyb3dzZXIuZG9tKSBPYmogPSBmaW5kRE9NT2JqZWN0KG5hbWVP Zk9iamVjdCkKCWVsc2UgaWYgKGJyb3dzZXIubnM0KSBmaW5kTGF5ZXIod2luZG93 LG5hbWVPZk9iamVjdCk7CglyZXR1cm4gKCFPYmogfHwgKCBicm93c2VyLm5zNCAm JiBPYmogPT0gd2luZG93ICkgKSA/ICJPYmplY3Qgbm90IGZvdW5kIiA6IE9iajsK fQovLyBoZWxwZXIgZnVuY3Rpb24KZnVuY3Rpb24gZmluZERPTU9iamVjdChuYW1l T2ZPYmplY3QpIHsKCWZvciAodmFyIGkgPSAwOyBpIDwgZG9jdW1lbnQuaW1hZ2Vz Lmxlbmd0aDsgaSsrKSB7CgkJaWYgKGRvY3VtZW50LmltYWdlc1tpXS5uYW1lPT1u YW1lT2ZPYmplY3QpIHJldHVybiBkb2N1bWVudC5pbWFnZXNbaV0KCX0KCXJldHVy biBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChuYW1lT2ZPYmplY3QpCn0KLy8gaGVs cGVyIGZ1bmN0aW9uCmZ1bmN0aW9uIGZpbmRMYXllcihub2RlLG5hbWVPZk9iamVj dCkgewoJaWYgKCBub2RlLm5hbWUgPT0gbmFtZU9mT2JqZWN0ICkgT2JqID0gbm9k ZTsKCWZvciAoIHZhciBjb3VudGVyID0gMDsgY291bnRlciA8IG5vZGUuZG9jdW1l bnQuaW1hZ2VzLmxlbmd0aDsgY291bnRlcisrICkgewoJCWlmIChub2RlLmRvY3Vt ZW50LmltYWdlc1tjb3VudGVyXS5uYW1lPT1uYW1lT2ZPYmplY3QpIE9iaiA9IG5v ZGUuZG9jdW1lbnQuaW1hZ2VzW2NvdW50ZXJdOwoJfQoJZm9yICggdmFyIGkgPSAw OyBpIDwgbm9kZS5kb2N1bWVudC5sYXllcnMubGVuZ3RoOyBpKysgKSB7CgkJZmlu ZExheWVyKG5vZGUuZG9jdW1lbnQubGF5ZXJzW2ldLG5hbWVPZk9iamVjdCk7Cgl9 Cn0KCmZ1bmN0aW9uIHRvZ2dsZVZpc2liaWxpdHkoaWQpIHsKICAgIG9iaiA9IGdl dE9iamVjdEJ5TmFtZShpZCk7CiAgICBpZiAob2JqKSB7CiAgICAgICAgIHYgPSBv Ymouc3R5bGUuZGlzcGxheTsKICAgICAgICAgb2JqLnN0eWxlLmRpc3BsYXkgPSAo diA9PSAnbm9uZScpID8gJ2Jsb2NrJyA6ICdub25lJzsKICAgICAgICAgaSA9IGdl dE9iamVjdEJ5TmFtZSgnaGlkZGVuSW1hZ2UnKTsKICAgICAgICAgaWYoaSkgaS5z cmMgPSAnL3BhZ2UvaW1hZ2VIYWNrLmpzcD9vYmplY3Q9JyArIGlkICsgJyZkaXNw bGF5PScgKyBvYmouc3R5bGUuZGlzcGxheSArICcmZHVtbXk9JyArIChuZXcgRGF0 ZSgpKS5nZXRUaW1lKCk7CiAgICB9Cn0KCi8qKiBDU1MgY2xhc3Mgc3VwcG9ydCAq LwovKiogcmV0dXJuIHRydWUgaWYgcmVtb3ZlZCwgZmFsc2UgaWYgbm90IGZvdW5k ICovCmZ1bmN0aW9uIHJlbW92ZUNsYXNzKGVsLCBjbGFzc05hbWUpIHsKCWlmICgh KGVsICYmIGVsLmNsYXNzTmFtZSkpIHJldHVybiBmYWxzZTsKCXZhciBjbHMgPSBl bC5jbGFzc05hbWUuc3BsaXQoIiAiKTsKCXZhciBhciA9IG5ldyBBcnJheSgpOwoJ Zm9yICh2YXIgaSA9IGNscy5sZW5ndGg7IGkgPiAwOykgaWYgKGNsc1stLWldICE9 IGNsYXNzTmFtZSkgYXJbYXIubGVuZ3RoXSA9IGNsc1tpXTsKCWVsLmNsYXNzTmFt ZSA9IGFyLmpvaW4oIiAiKTsKICAgIHJldHVybiBjbHMubGVuZ3RoICE9IGFyLmxl bmd0aDsKfQovKiogcmV0dXJuIHRydWUgaWYgZWxlbWVudCBoYXMgdGhhdCBjbGFz cyAqLwpmdW5jdGlvbiBoYXNDbGFzcyhlbCwgY2xhc3NOYW1lKSB7CglpZiAoIShl bCAmJiBlbC5jbGFzc05hbWUpKSByZXR1cm4gZmFsc2U7Cgl2YXIgY2xzID0gZWwu Y2xhc3NOYW1lLnNwbGl0KCIgIik7Cglmb3IgKHZhciBpID0gY2xzLmxlbmd0aDsg aSA+IDA7KSBpZiAoY2xzWy0taV0gPT0gY2xhc3NOYW1lKSByZXR1cm4gdHJ1ZTsK CXJldHVybiBmYWxzZTsKfQovKiogYWRkIGNsYXNzIHRvIGVsZW1lbnQsIGlmIGVs ZW1lbnQgYWxyZWFkeSBoYWQgdGhhdCBjbGFzcyAtIGRvZXMgbm90aGluayAqLwpm dW5jdGlvbiBhZGRDbGFzcyhlbCwgY2xhc3NOYW1lKSB7CiAgICBpZiAoIWVsIHx8 IGhhc0NsYXNzKGVsLCBjbGFzc05hbWUpKSByZXR1cm47CiAgICBpZiAoZWwuY2xh c3NOYW1lKSBlbC5jbGFzc05hbWUgKz0gIiAiICsgY2xhc3NOYW1lOwogICAgZWxz ZSBlbC5jbGFzc05hbWUgPSBjbGFzc05hbWU7Cn0KLyoqIEFkZCBDU1MgcnVsZSBh cyBsYXN0IHJ1bGUgaW4gbGFzdCBzdHlsZXNoZWV0IC0gb3ZlcnJpZGUgYWxsIHBy ZXZpb3VzIGRlZmluaXRpb25zCiAgICByZW1vdmluZyBpcyBoYXJkZXIgLSBub3Qg aW1wbGVtZW50ZWQsIHVzZSBpdCB3aXRoIGNhdXRpb24gKi8KZnVuY3Rpb24gYWRk Q3NzUnVsZShzZWxlY3RvciwgcnVsZSkgewogICAgaWYgKGRvY3VtZW50LnN0eWxl U2hlZXRzKSB7CiAgICAgICAgdmFyIGNzcyA9IGRvY3VtZW50LnN0eWxlU2hlZXRz W2RvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aC0xXTsgLy8gZ2V0IGxhc3QgY3Nz CiAgICAgICAgaWYgKGNzcy5hZGRSdWxlKSBjc3MuYWRkUnVsZShzZWxlY3Rvciwg cnVsZSk7ICAgICAgICAgLy8gSUUKICAgICAgICBlbHNlIGlmIChjc3MuaW5zZXJ0 UnVsZSkgY3NzLmluc2VydFJ1bGUoc2VsZWN0b3IgKyAieyIgKyBydWxlICsgIn0i LCBjc3MuY3NzUnVsZXMubGVuZ3RoKTsgIC8vIFczQwogICAgfQp9Ci8qKiBnZXQg Q1NTIHN0eWxlIG9mIHRoZSBkb2N1bWVudCAqLwpmdW5jdGlvbiBnZXRDc3NUZXh0 KCkgewogIHZhciBpbXBvcnRzID0gIiI7CiAgdmFyIGNzc1RleHQgPSAiXG4iOwog IHZhciBzdHlsZVNoZWV0cyA9IGRvY3VtZW50LnN0eWxlU2hlZXRzOwogIGZvciAo dmFyIGkgPSAwOyBpIDwgc3R5bGVTaGVldHMubGVuZ3RoOyBpKyspIHsKICAgIHZh ciBjc3MgPSBzdHlsZVNoZWV0cy5pdGVtKGkpOwogICAgdmFyIG1lZGlhVGV4dCA9 IHR5cGVvZiBjc3MubWVkaWEgPT0gInN0cmluZyIgPyBjc3MubWVkaWEgOiBjc3Mu bWVkaWEubWVkaWFUZXh0OwogICAgaWYgKCFtZWRpYVRleHQgfHwgbWVkaWFUZXh0 LmluZGV4T2YoImFsbCIpICE9IC0xIHx8IG1lZGlhVGV4dC5pbmRleE9mKCJzY3Jl ZW4iKSAhPSAtMSkgewogICAgICBpZiAoY3NzLmltcG9ydHMpIHsKICAgICAgICAv LyBJRSBpbXBvcnRzCiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjc3MuaW1w b3J0cy5sZW5ndGg7IGorKykgewogICAgICAgICAgdmFyIGhyZWYgPSBjc3MuaW1w b3J0c1tqXS5ocmVmOwogICAgICAgICAgdmFyIGxhc3RRdW90ZSA9IGhyZWYubGFz dEluZGV4T2YoJyInKTsKICAgICAgICAgIGlmIChsYXN0UXVvdGUgIT0gLTEpIHsK ICAgICAgICAgICAgLy8gaHJlZiBjb250YWlucyBtZWRpYSAtICJ1cmwiIG1lZGlh CiAgICAgICAgICAgIG1lZGlhVGV4dCA9IGhyZWYuc3Vic3RyKGxhc3RRdW90ZSAr IDEpOwogICAgICAgICAgICBpZiAobWVkaWFUZXh0LmluZGV4T2YoImFsbCIpID09 IC0xICYmIG1lZGlhVGV4dC5pbmRleE9mKCJzY3JlZW4iKSA9PSAtMSkgY29udGlu dWU7CiAgICAgICAgICAgIGhyZWYgPSBocmVmLnN1YnN0cigxLCBsYXN0UXVvdGUg LSAxKTsKICAgICAgICAgIH0KICAgICAgICAgIGltcG9ydHMgKz0gJ0BpbXBvcnQg dXJsKCInICsgaHJlZiArICciKTtcbic7CiAgICAgICAgfQogICAgICB9CiAgICAg IGlmIChjc3MucnVsZXMpIHsKICAgICAgICAvLyBJRSBydWxlcwogICAgICAgIGZv ciAodmFyIGogPSAwOyBqIDwgY3NzLnJ1bGVzLmxlbmd0aDsgaisrKSB7CiAgICAg ICAgICAvLyBIb3cgdG8gZmlsdGVyIG1lZGlhIHJ1bGVzID8/PwogICAgICAgICAg Y3NzVGV4dCArPSBjc3MucnVsZXNbal0uc2VsZWN0b3JUZXh0ICsgIiB7ICIgKyBj c3MucnVsZXNbal0uc3R5bGUuY3NzVGV4dCArICIgfVxuIjsKICAgICAgICB9CiAg ICAgIH0gZWxzZSBpZiAoY3NzLmNzc1J1bGVzKSB7CiAgICAgICAgLy8gVzNDIGNv bXBsaWFudCBicm93c2VyCiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjc3Mu Y3NzUnVsZXMubGVuZ3RoOyBqKyspIHsKICAgICAgICAgIHZhciBydWxlID0gY3Nz LmNzc1J1bGVzLml0ZW0oaik7CiAgICAgICAgICBpZiAocnVsZS50eXBlID09IHJ1 bGUuSU1QT1JUX1JVTEUgfHwgcnVsZS50eXBlID09IHJ1bGUuTUVESUFfUlVMRSkg ewogICAgICAgICAgICBtZWRpYVRleHQgPSBydWxlLm1lZGlhLm1lZGlhVGV4dDsK ICAgICAgICAgICAgaWYgKG1lZGlhVGV4dCAmJiBtZWRpYVRleHQuaW5kZXhPZigi YWxsIikgPT0gLTEgJiYgbWVkaWFUZXh0LmluZGV4T2YoInNjcmVlbiIpID09IC0x KSBjb250aW51ZTsKICAgICAgICAgICAgaWYgKHJ1bGUudHlwZSA9PSBydWxlLklN UE9SVF9SVUxFKSBpbXBvcnRzICs9IHJ1bGUuY3NzVGV4dDsKICAgICAgICAgICAg ZWxzZSBjc3NUZXh0ICs9IHJ1bGUuY3NzVGV4dCArICJcbiI7CiAgICAgICAgICB9 IGVsc2UgewogICAgICAgICAgICBjc3NUZXh0ICs9IHJ1bGUuY3NzVGV4dCArICJc biI7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQogIHJl dHVybiBpbXBvcnRzICsgY3NzVGV4dDsKfQoKZnVuY3Rpb24gbG9hZENzcyh1cmws IHRpdGxlLCBtZWRpYSkgewogICAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxl bWVudCgnbGluaycpOwogICAgZWwudHlwZSA9ICd0ZXh0L2Nzcyc7CiAgICBlbC5y ZWwgPSAnc3R5bGVzaGVldCc7CiAgICBlbC5ocmVmID0gdXJsOwogICAgZWwubWVk aWEgPSBtZWRpYSB8fCAnc2NyZWVuJzsKICAgIGVsLnRpdGxlID0gdGl0bGUgfHwg J2R5bmFtaWNMb2FkZWRTaGVldCc7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5 VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKGVsKTsKfQoKZnVuY3Rpb24g bG9hZEpzKHVybCkgeyAgICAKICAgIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVs ZW1lbnQoInNjcmlwdCIpOwogICAgZWwudHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQi OwogICAgZWwuc3JjID0gdXJsOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh Z05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZChlbCk7Cn0KCi8qKiBET00gRXZl bnQgc3VwcG9ydCAqLwovKiogYWRkRXZlbnRMaXN0ZW5lciBtZXRob2QgbWF5IGFs cmVhZHkgZXhpc3QsIGl0J3Mgbm90IHRyaXZpYWwgaW1wbGVtZW50IGl0IGFuZCBu b3QgYnJlYWsgaXQsIHVzZSBvdGhlciBtYW1lICdhZGRMaXN0ZW5lcicgaXMgc2lt cGxlICovCmZ1bmN0aW9uIGFkZExpc3RlbmVyKGVsLCBldm5hbWUsIGZ1bmMpIHsK ICAgIGlmIChlbC5hdHRhY2hFdmVudCkgZWwuYXR0YWNoRXZlbnQoIm9uIiArIGV2 bmFtZSwgZnVuYyk7CgllbHNlIGlmKGVsLmFkZEV2ZW50TGlzdGVuZXIpIGVsLmFk ZEV2ZW50TGlzdGVuZXIoZXZuYW1lLCBmdW5jLCB0cnVlKTsKfQovKiogcmVtb3Zl RXZlbnRMaXN0ZW5lciAqLwpmdW5jdGlvbiByZW1vdmVMaXN0ZW5lcihlbCwgZXZu YW1lLCBmdW5jKSB7CglpZiAoZWwuZGV0YWNoRXZlbnQpIGVsLmRldGFjaEV2ZW50 KCJvbiIgKyBldm5hbWUsIGZ1bmMpOwoJZWxzZSBpZiAoZWwucmVtb3ZlRXZlbnRM aXN0ZW5lcikgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihldm5hbWUsIGZ1bmMsIHRy dWUpOwp9CgovKiogU2VydmVyIHNlc3Npb24gYWNjZXNzICovCi8qKiBoZWxwZXIg bWV0aG9kIHRvIGFjY2VzcyBzZXNzaW9uIG9iamVjdCAqLwpmdW5jdGlvbiBfZ2V0 U2Vzc2lvbigpIHsKICAgIHJldHVybiB3aW5kb3cuc2Vzc2lvbiA/IHdpbmRvdy5z ZXNzaW9uIDogKHdpbmRvdy5zZXNzaW9uID0gbmV3IEFycmF5KCkpOwp9Ci8qKiBz ZW5kIHJlcXVlc3QgdG8gc2VydmVyIHRvIHByZXNlcnZlIHNvbWUgdmFsdWUgYmV0 d2VlbiBkaWZmZXJlbnQgcmVxdWVzdHMsIHZhbHVlIGlzIGFjY2Vzc2libGUgdXNp bmcgZ2V0U2Vzc2lvbkF0dHJpYnV0ZSAqLwpmdW5jdGlvbiBzZXRTZXNzaW9uQXR0 cmlidXRlKG5hbWUsIHZhbHVlKSB7CiAgICAvKiBqdXN0IHRvIHRlc3QgY2FsbGJh Y2sgKi8KICAgIGZ1bmN0aW9uIHRlc3QoZG9jKSB7Ci8vICAgICAgICBhbGVydCgi U2VydmVyIHJldHVybmVkOiAiICsgZG9jLmJvZHkuaW5uZXJIVE1MKTsKICAgIH0K ICAgIHNlbmRTZXJ2ZXJNc2coIi9hY3Rpb24vc2Vzc2lvbkFjY2Vzcz9hY3Rpb249 c2V0SmF2YVNjcmlwdEF0dHJpYnV0ZSZuYW1lPSIgKyBuYW1lICsgIiZ2YWx1ZT0i ICsgdmFsdWUsIHRlc3QpOwogICAgX2dldFNlc3Npb24oKVtuYW1lXSA9IHZhbHVl Owp9Ci8qKiBzZWUgc2V0U2Vzc2lvbkF0dHJpYnV0ZSAqLwpmdW5jdGlvbiBnZXRT ZXNzaW9uQXR0cmlidXRlKG5hbWUpIHsKICAgIHJldHVybiBfZ2V0U2Vzc2lvbigp W25hbWVdOwp9CgovKiogc2VuZCByZXF1ZXN0IC0gdXJsIC0gdG8gdGhlIHNlcnZl ciwgcmVzcG9uc2UgaXMgYWNjZXNzaWJsZSBpbiBkb2N1bWVudCBwYXNzZWQgdG8g Y2FsbGJhY2sgZnVuY3Rpb24KICAgIERPIE5PVCBTZW5kIGFueXRoaW5nIGJlZm9y ZSBwYWdlIGlzIGxvYWRlZCEKICovCmZ1bmN0aW9uIHNlbmRTZXJ2ZXJNc2codXJs LCBjYWxsQmFjaykgewogICAgLyogY2FsbGVkIHdoZW4gZnJhbWUgaXMgbG9hZGVk ICovCiAgICBmdW5jdGlvbiBfcmVjZWl2ZVNlcnZlclJlc3BvbnNlKGV2KSB7CiAg ICAgICAgdmFyIGlGcmFtZSA9IHdpbmRvdy5ldmVudCA/IHdpbmRvdy5ldmVudC5z cmNFbGVtZW50IDogZXYuY3VycmVudFRhcmdldDsgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIElFIDogVzNDCiAgICAgICAgdmFyIGRvYyA9IGlGcmFtZS5jb250 ZW50RG9jdW1lbnQgPyBpRnJhbWUuY29udGVudERvY3VtZW50IDogZG9jdW1lbnQu ZnJhbWVzKGlGcmFtZS5pZCkuZG9jdW1lbnQ7IC8vIFczQyA6IElFCiAgICAgICAg aWYgKGlGcmFtZS5jYWxsQmFjaykgaUZyYW1lLmNhbGxCYWNrKGRvYyk7CiAgICAg ICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50 QnlJZChpRnJhbWUuaWQpKTsKICAgIH0KCiAgICB2YXIgaUZyYW1lID0gZG9jdW1l bnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CiAgICBhZGRMaXN0ZW5lcihpRnJh bWUsICJsb2FkIiwgX3JlY2VpdmVTZXJ2ZXJSZXNwb25zZSk7CiAgICBpRnJhbWUu c2V0QXR0cmlidXRlKCJpZCIsICJtc2dGcmFtZSIgKyBuZXcgRGF0ZSgpLmdldFRp bWUoKSk7ICAgLy8gc28gSUUgY2FuIHJldHJpdmUgZG9jdW1lbnQKICAgIGlGcmFt ZS5zZXRBdHRyaWJ1dGUoInNyYyIsIHVybCk7CiAgICBpRnJhbWUuc2V0QXR0cmli dXRlKCJzdHlsZSIsICJkaXNwbGF5Om5vbmUiKTsKICAgIGlmIChjYWxsQmFjaykg aUZyYW1lLmNhbGxCYWNrID0gY2FsbEJhY2s7CiAgICBkb2N1bWVudC5ib2R5LmFw cGVuZENoaWxkKGlGcmFtZSk7Cn0KCi8qKgogIGNvcHkgaW5uZXJIVE1MIG9mIHNy YyBlbGVtZW50IHRvIGlubmVySFRNTCBvZiB0YXJnZXQgZWxlbWVudAoqLwpmdW5j dGlvbiBjb3B5SW5uZXJIdG1sKHNyYywgdGFyZ2V0KSB7CiAgICB2YXIgZG9tU3Vw cG9ydGVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQgPyB0cnVlIDogZmFsc2U7 CiAgICB2YXIgc2UgPSAoZG9tU3VwcG9ydGVkICYmIHR5cGVvZiBzcmMgPT0gInN0 cmluZyIpID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3JjKSA6IHNyYzsKICAg IHZhciB0ZSA9IChkb21TdXBwb3J0ZWQgJiYgdHlwZW9mIHRhcmdldCA9PSAic3Ry aW5nIikgPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXQpIDogdGFyZ2V0 OwogICAgaWYgKHNlLmlubmVySFRNTCAmJiB0ZS5pbm5lckhUTUwpIHRlLmlubmVy SFRNTCA9IHNlLmlubmVySFRNTDsKfQovKioKIGZpbHRlciBzZWxlY3Qgb3B0aW9u cywgb3B0aW9ucyB0aGF0IGRvIG5vdCBjb250YWluIGZpbHRlciB0ZXh0IGFyZSBy ZW1vdmVkCiBpbiBmaXJzdCB1c2UsIG9yaWdpbmFsIHNlbGVjdCBvcHRpb25zIGFy ZSBiYWNrZWQgdXAgYXMgYXR0cmlidXRlIG9wdGlvbnNDb3B5CiovCmZ1bmN0aW9u IGZpbHRlclNlbGVjdChzZWxlY3RJZCwgdmFsdWUpIHsKICB2YXIgc2VsZWN0Owog IGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCAmJiAoc2VsZWN0ID0gZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoc2VsZWN0SWQpKSAmJiBzZWxlY3Qub3B0aW9ucykg ewogICAgaWYgKCFzZWxlY3Qub3B0aW9uc0NvcHkpIHsKICAgICAgc2VsZWN0Lm9w dGlvbnNDb3B5ID0gbmV3IEFycmF5KCk7CiAgICAgIHNlbGVjdC5vcHRpb25UZXh0 cyA9IG5ldyBBcnJheSgpOwogICAgICBmb3IgKHZhciBpPTA7IGk8c2VsZWN0Lm9w dGlvbnMubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIgb3B0ID0gc2VsZWN0Lm9w dGlvbnNbaV07CiAgICAgICAgc2VsZWN0Lm9wdGlvbnNDb3B5W2ldID0gb3B0Owog ICAgICAgIHNlbGVjdC5vcHRpb25UZXh0c1tpXSA9IG9wdC50ZXh0LnRvTG93ZXJD YXNlKCk7CiAgICAgIH0KICAgIH0KICAgIHZhbHVlID0gdmFsdWUudG9Mb3dlckNh c2UoKTsKICAgIHZhciBhbGxUZXh0cyA9IHNlbGVjdC5vcHRpb25UZXh0czsKICAg IHZhciBkaXNwbGF5T3B0aW9ucyA9IHNlbGVjdC5vcHRpb25zOwogICAgdmFyIGNv dW50ID0gZGlzcGxheU9wdGlvbnMubGVuZ3RoID0gMDsKICAgIGZvciAodmFyIGk9 MDsgaSA8IGFsbFRleHRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIGlmIChhbGxUZXh0 c1tpXS5pbmRleE9mKHZhbHVlKSAhPSAtMSkgewogICAgICAgIHZhciBvcHRpb24g PSBzZWxlY3Qub3B0aW9uc0NvcHlbaV07CiAgICAgICAgZGlzcGxheU9wdGlvbnNb Y291bnQrK10gPSBvcHRpb247CiAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gb3B0 aW9uLnRleHQgPT0gdmFsdWU7CiAgICAgIH0KICAgIH0KICAgIGlmIChjb3VudCA9 PSAxKSBkaXNwbGF5T3B0aW9uc1swXS5zZWxlY3RlZCA9IHRydWU7CiAgfQp9Cgpm dW5jdGlvbiBwb3B1cEVsZW1lbnQoZWwsIGFuY2hvciwgd2luZG93UGFyYW1zKSB7 CiAgICBpZiAodHlwZW9mIGVsID09ICJzdHJpbmciKSB7IC8vIGVsIGlzIGlkCiAg ICAgICAgZWwgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQpID8gZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoZWwpIDoKICAgICAgICAgICAgIChkb2N1bWVudC5hbGwp ID8gZG9jdW1lbnQuYWxsW2VsXSA6IGZhbHNlOwogICAgfQogICAgaWYgKGVsKSB7 CiAgICAgICAgdmFyIHRtcDsKICAgICAgICBpZiAoZWwucG9wdXBXaW5kb3cgJiYg IWVsLnBvcHVwV2luZG93LmNsb3NlZCkgewogICAgICAgICAgICBlbC5wb3B1cFdp bmRvdy5mb2N1cygpOwogICAgICAgICAgICB0bXAgPSBlbC5wb3B1cFdpbmRvdy5k b2N1bWVudDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZighd2luZG93 UGFyYW1zKSB3aW5kb3dQYXJhbXMgPSB7fTsKICAgICAgICAgICAgZWwucG9wdXBX aW5kb3cgPSB3aW5kb3cub3BlbignJywKICAgICAgICAgICAgICAgIHdpbmRvd1Bh cmFtcy5uYW1lP3dpbmRvd1BhcmFtcy5uYW1lOicnLAogICAgICAgICAgICAgICAg d2luZG93UGFyYW1zLmZlYXR1cmVTdHJpbmc/d2luZG93UGFyYW1zLmZlYXR1cmVT dHJpbmc6J3Jlc2l6YWJsZT15ZXMsc2Nyb2xsYmFycz15ZXMsd2lkdGg9NjAwLGhl aWdodD01MDAnKTsKICAgICAgICAgICAgdG1wID0gZWwucG9wdXBXaW5kb3cuZG9j dW1lbnQ7CiAgICAgICAgICAgIHRtcC53cml0ZWxuKCc8aHRtbD48aGVhZD48dGl0 bGU+Jytkb2N1bWVudC50aXRsZSsnPC90aXRsZT48c3R5bGUgdHlwZT0idGV4dC9j c3MiPicpOwogICAgICAgICAgICB2YXIgc3R5bGVTaGVldHMgPSBkb2N1bWVudC5z dHlsZVNoZWV0czsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IHN0eWxlU2hl ZXRzICYmIGkgPCBzdHlsZVNoZWV0cy5sZW5ndGg7IGkrKykgewogICAgICAgICAg ICAgICAgdmFyIGNzcyA9IHN0eWxlU2hlZXRzLml0ZW0oaSk7CiAgICAgICAgICAg ICAgICBpZiAoY3NzLmNzc1RleHQpIHRtcC53cml0ZWxuKGNzcy5jc3NUZXh0KTsK ICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHZhciBj c3NSdWxlcyA9IGNzcy5ydWxlcyA/IGNzcy5ydWxlcyA6IGNzcy5jc3NSdWxlczsK ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgY3NzUnVsZXMgJiYg aiA8IGNzc1J1bGVzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAg ICAgIHRtcC53cml0ZWxuKGNzc1J1bGVzLml0ZW0oaikuY3NzVGV4dCk7CiAgICAg ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9 CiAgICAgICAgICAgIHRtcC53cml0ZWxuKCc8L3N0eWxlPjwvaGVhZD48Ym9keSBp ZD0iJyArIGVsLmlkICsgJyI+Jyk7CiAgICAgICAgICAgIHRtcC53cml0ZWxuKGVs LmlubmVySFRNTCk7CiAgICAgICAgICAgIHRtcC53cml0ZWxuKCc8L2JvZHk+PC9o dG1sPicpOwogICAgICAgICAgICB0bXAuY2xvc2UoKTsKICAgICAgICB9CiAgICAg ICAgaWYgKGFuY2hvcikgewogICAgICAgICAgICB2YXIgdGFyZ2V0ID0gKHRtcC5n ZXRFbGVtZW50QnlJZCkgPyB0bXAuZ2V0RWxlbWVudEJ5SWQoYW5jaG9yKSA6CiAg ICAgICAgICAgICAgICAodG1wLmFsbCkgPyB0bXAuYWxsW2FuY2hvcl0gOiBmYWxz ZTsKICAgICAgICAgICAgaWYgKHRhcmdldCkgewogICAgICAgICAgICAgICAgaWYg KHRhcmdldC5zY3JvbGxJbnRvVmlldykgdGFyZ2V0LnNjcm9sbEludG9WaWV3KCk7 CiAgICAgICAgICAgICAgICBlbHNlIGlmICh3aW5kb3cuc2Nyb2xsICYmIHRhcmdl dC5vZmZzZXRUb3ApIGVsLnBvcHVwV2luZG93LnNjcm9sbCgwLCB0YXJnZXQub2Zm c2V0VG9wKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCX0KfQoKLyoqCW1hcmtz IGFsbCBjaGVjayBib3ggKi8KZnVuY3Rpb24gbWFya0FsbENoZWNrYm94ZXMoYUZv cm0sIGFOYW1lUHJlZml4LCBhQ2hlY2tlZCkKewoJdmFyIGVsbXRzID0gYUZvcm0u ZWxlbWVudHM7Cglmb3IgKHZhciBpPTA7IGk8ZWxtdHMubGVuZ3RoOyBpKyspCgkJ aWYgKChlbG10c1tpXS50eXBlID09ICJjaGVja2JveCIpICYmCgkJCShlbG10c1tp XS5uYW1lLmluZGV4T2YoYU5hbWVQcmVmaXgpID09IDApKQoJCQllbG10c1tpXS5j aGVja2VkID0gYUNoZWNrZWQ7Cn0KCmZ1bmN0aW9uIHN1Ym1pdE11bHRpQXJ0aWNs ZXMoYUZvcm0sIGFjdGlvbiwgYU1hcmthbGwsIGVycm9yTWVzc2FnZSkgewogICAg dmFyIGhhc01hcmtlZCA9IGZhbHNlOwogICAgdmFyIGVsbXRzID0gYUZvcm0uZWxl bWVudHM7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsbXRzLmxlbmd0aDsgaSsr KSB7CgkJaWYgKChlbG10c1tpXS5uYW1lID09ICJkb2kiKSAmJgoJCQkoZWxtdHNb aV0udHlwZSA9PSAiY2hlY2tib3giKSAmJgoJCQkoZWxtdHNbaV0uY2hlY2tlZCkp IHsKCQkJaGFzTWFya2VkID0gdHJ1ZTsKCQl9CiAgICB9CgogICAgaWYgKCFoYXNN YXJrZWQpIHsKCQlpZiAoYU1hcmthbGwpIHsKCQkJbWFya0FsbENoZWNrYm94ZXMo YUZvcm0sICJkb2kiLCB0cnVlKTsKCQl9IGVsc2UgewoJCQlhbGVydChlcnJvck1l c3NhZ2UgPyBlcnJvck1lc3NhZ2UgOiAiUGxlYXNlIGNoZWNrIGF0IGxlYXN0IG9u ZSBhcnRpY2xlLiIpOwogICAgCSAgICByZXR1cm47CgkJfQoJfQoKCWZvciAodmFy IGkgPSAwOyBpIDwgZWxtdHMubGVuZ3RoOyBpKyspIHsKCQlpZiAoKGVsbXRzW2ld Lm5hbWUgPT0gImRvaSIpICYmCgkJCShlbG10c1tpXS50eXBlICE9ICJjaGVja2Jv eCIpKSB7CgkJCWVsbXRzW2ldLm5hbWUgPSAieGRvaSI7CgkJfQoJfQoKCWlmIChh Rm9ybS5nZXRBdHRyaWJ1dGVOb2RlKSB7CgkJYUZvcm0uZ2V0QXR0cmlidXRlTm9k ZSgiYWN0aW9uIikubm9kZVZhbHVlID0gYWN0aW9uOwoJfSBlbHNlIHsKCQlhRm9y bS5hY3Rpb24gPSBhY3Rpb247Cgl9CiAgICBhRm9ybS5tZXRob2QgPSAicG9zdCI7 CiAgICBhRm9ybS5zdWJtaXQoKTsKfQoKZnVuY3Rpb24gc2V0Q2hlY2tXaGVuRGVm aW5lKGFDYngsIGFTdGF0ZSkKewoJaWYgKGFDYngpIHsKCQlhQ2J4LmNoZWNrZWQg PSBhU3RhdGU7Cgl9Cn0KCi8vIC0tLSBzaWRlIHNmeCBsaW5rcyAtLS0KLy8KZnVu Y3Rpb24gZ2VuU2lkZUNpdGF0aW9uKGRiaWQsIGxpbmtvdXRVcmwsIGRpc3BsYXkp IHsKCWdlblNpZGUoJ2NpdGF0aW9uJywgZGJpZCwgbGlua291dFVybCwgZGlzcGxh eSk7Cn0KZnVuY3Rpb24gZ2VuU2lkZVF1aWNrU2VhcmNoKGRiaWQsIHZhbHVlLCBk aXNwbGF5KSB7CglnZW5TaWRlKCdxdWlja3NlYXJjaCcsIGRiaWQsICcnLCBkaXNw bGF5LCAnJywgJycsICcnLCB2YWx1ZSk7Cn0KZnVuY3Rpb24gZ2VuU2lkZVJlbGF0 ZWQoZGJpZCwgbGlua291dFVybCwgZGlzcGxheSkgewoJZ2VuU2lkZSgncmVsYXRl ZCcsIGRiaWQsIGxpbmtvdXRVcmwsIGRpc3BsYXkpOwp9CgovLyAtLS0gcG9wdXAg LS0tCi8vCi8qRnVuY3Rpb24gdG8gZ2VuZXJhdGUgYSBwb3B1cCB3aW5kb3csIHdp dGggcGFyYW1zIHRvIHBhc3MgdG8gZGlzcGF0Y2hlciAqLwpmdW5jdGlvbiBwb3B1 cChjaXRhcnQsIGlkLCBkb2ksIHB0eXBlLCBhcmVhKSB7Cglwb3B1cFJlZihjaXRh cnQsIGlkLCBkb2ksIHB0eXBlLCBhcmVhLCA2MDAsIDUwMCk7Cn0KCmZ1bmN0aW9u IHBvcHVwRnVsbChpZCwgZG9pLCBwdHlwZSwgYXJlYSwgd2lkdGgsIGhlaWdodCkg ewogICAgdmFyIHBvcHVwVVJMID0gIi9hY3Rpb24vc2hvd0Z1bGxQb3B1cD9pZD0i ICsgaWQgKyAiJmRvaT0iICsgZG9pOwogICAgaWYgKGFyZWEpIHBvcHVwVVJMICs9 ICImYXJlYT0iICsgYXJlYTsKICAgIGlmIChwdHlwZSkgcHR5cGUgPSBwdHlwZS5y ZXBsYWNlKC9cVy9nLCAnJyk7CiAgICB2YXIgd2lubmFtZSA9IHB0eXBlID8gcHR5 cGUgOiAncG9wdXBSZWYnOwoJdmFyIG4gPSB3aW5kb3cub3Blbihwb3B1cFVSTCwg d2lubmFtZSwgJ3Jlc2l6YWJsZT15ZXMsc2Nyb2xsYmFycz15ZXMsd2lkdGg9Jyt3 aWR0aCsnLGhlaWdodD0nK2hlaWdodCk7CgluLm1vdmVUbygxMCwxMCk7CgluLmZv Y3VzKCk7Cn0KZnVuY3Rpb24gcG9wdXBSZWYoY2l0YXJ0LCBpZCwgZG9pLCBwdHlw ZSwgYXJlYSwgd2lkdGgsIGhlaWdodCkgewogICAgdmFyIHBvcHVwVVJMID0gIi9h Y3Rpb24vc2hvd1BvcHVwP2NpdGlkPSIgKyBjaXRhcnQgKyAiJmlkPSIgKyBpZCAr ICImZG9pPSIgKyBkb2k7CiAgICBpZiAoYXJlYSkgcG9wdXBVUkwgKz0gIiZhcmVh PSIgKyBhcmVhOwogICAgaWYgKHB0eXBlKSBwdHlwZSA9IHB0eXBlLnJlcGxhY2Uo L1xXL2csICcnKTsKICAgIHZhciB3aW5uYW1lID0gcHR5cGUgPyBwdHlwZSA6ICdw b3B1cFJlZic7Cgl2YXIgbiA9IHdpbmRvdy5vcGVuKHBvcHVwVVJMLCB3aW5uYW1l LCAncmVzaXphYmxlPXllcyxzY3JvbGxiYXJzPXllcyx3aWR0aD0nK3dpZHRoKycs aGVpZ2h0PScraGVpZ2h0KTsKCW4ubW92ZVRvKDEwLDEwKTsKCW4uZm9jdXMoKTsK fQoKZnVuY3Rpb24gcG9wdXBIZWxwNTUwKGFVcmwpCnsKCXBvcHVwSGVscFgoYVVy bCwgIndpZHRoPTU1MCxoZWlnaHQ9NTQwLHRvcD0xMCxsZWZ0PTUwLHRvb2xiYXI9 MCxtZW51YmFyPTAscmVzaXphYmxlPXllcyxzY3JvbGxiYXJzPXllcyIpOwp9CmZ1 bmN0aW9uIHBvcHVwSGVscDU4MChhVXJsKQp7Cglwb3B1cEhlbHBYKGFVcmwsICJ3 aWR0aD01ODAsaGVpZ2h0PTU0MCx0b3A9MTAsbGVmdD01MCx0b29sYmFyPTAsbWVu dWJhcj0wLHJlc2l6YWJsZT15ZXMsc2Nyb2xsYmFycz15ZXMiKTsKfQpmdW5jdGlv biBwb3B1cEhlbHA2MjUoYVVybCkKewoJcG9wdXBIZWxwWChhVXJsLCAid2lkdGg9 NjI1LGhlaWdodD01NDAsdG9wPTEwLGxlZnQ9NTAsdG9vbGJhcj0wLG1lbnViYXI9 MCxyZXNpemFibGU9eWVzLHNjcm9sbGJhcnM9eWVzIik7Cn0KZnVuY3Rpb24gcG9w dXBIZWxwWChhVXJsLCBhV2luUHJvcHMpCnsKCXZhciB3aW5pZCA9IHdpbmRvdy5v cGVuKGFVcmwsInBvcHVwSGVscCIsYVdpblByb3BzKTsKICAgIGlmICh3aW5pZC5m b2N1cykgd2luaWQuZm9jdXMoKTsKICAgIHJldHVybiBmYWxzZTsKfQpmdW5jdGlv biBwb3B1cEhlbHAoYVVybCkKewoJcG9wdXBIZWxwNTgwKGFVcmwpOwp9CgovKiBG dW5jdGlvbiB0byBvcGVuIHVwIGEgbmV3IGJyb3dzZXIgd2luZG93LCB3aXRob3V0 IGEgbmF2aWdhdGlvbiBiYXIgKi8KZnVuY3Rpb24gcG9wdXBDb3ZlckltYWdlKHVy bCkKewogICAgdmFyIG5ld193aW5kb3c7CiAgICB2YXIgd2luZG93UHJvcGVydGll czsKICAgIHdpbmRvd1Byb3BlcnRpZXMgPSAid2lkdGg9NzUwLGhlaWdodD03MDAs dG9wPTMwLGxlZnQ9MjMwLHRvb2xiYXI9MCxtZW51YmFyPTAscmVzaXphYmxlPTEs c2Nyb2xsYmFycz15ZXMiOwogICAgaWYobmV3X3dpbmRvdz09bnVsbCkgewogICAg ICAgbmV3X3dpbmRvdyA9IHdpbmRvdy5vcGVuKHVybCxudWxsLHdpbmRvd1Byb3Bl cnRpZXMpOwogICAgfSBlbHNlIHsKICAgICAgIG5ld193aW5kb3cuZG9jdW1lbnQu cmVwbGFjZSh1cmwpOwogICAgfQp9CgovLyAtLS0gcXVpY2sgc2VhcmNoIC0tLQov LwovKioKICoJZ2V0IGFsbCB0aGUgZm9ybSBlbGVtZW50cyBhbmQgY2hlY2sgaWYg dGhlICJkYm5hbWUiCiAqCW1hcHMgdG8gc3BlY2lmaWQgdmFsdWUuCiAqLwpmdW5j dGlvbiBjaGVja0RiTmFtZShhRm9ybSwgYVZhbHVlKQp7Cgl2YXIgZWxlbWVudHMg PSBhRm9ybS5lbGVtZW50czsKCWZvciAodmFyIGk9MDsgaTxlbGVtZW50cy5sZW5n dGg7IGkrKykKCXsKCQl2YXIgZWxtdCA9IGVsZW1lbnRzW2ldOwoJCWlmIChlbG10 Lm5hbWUgPT0gImRibmFtZSIpCgkJewoJCQlpZiAoZWxtdC5vcHRpb25zKSB7CgkJ CQlpZiAoKGVsbXQudmFsdWUgPT0gYVZhbHVlKSB8fAoJCQkJCShlbG10Lm9wdGlv bnNbZWxtdC5zZWxlY3RlZEluZGV4XS52YWx1ZSA9PSBhVmFsdWUpKQoJCQkJCXJl dHVybiB0cnVlOwoJCQl9CgkJCWVsc2UgaWYgKGVsbXQuY2hlY2tlZCAmJiAoZWxt dC52YWx1ZSA9PSBhVmFsdWUpKSB7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfQoJCX0K CX0KCXJldHVybiBmYWxzZTsKfQoKZnVuY3Rpb24gb25BdXRob3JTZWFyY2hDbGlj ayhhRm9ybSkKewoJaWYgKCEgYUZvcm0pIHsKCQlhRm9ybSA9IGRvY3VtZW50LmRv Y3VtZW50LmZvcm1zWzBdOwoJfQoJdmFyIGVsbXRzID0gYUZvcm0uZWxlbWVudHM7 Cgl2YXIgYXV0aG9ycyA9IG5ldyBBcnJheSgpOwoJdmFyIGtleXdvcmRzID0gbmV3 IEFycmF5KCk7CglnZXRBdXRob3JzQW5kS2V5d29yZHMoYUZvcm0sIGF1dGhvcnMs IGtleXdvcmRzLCBmYWxzZSk7CglpZiAoY2hlY2tEYk5hbWUoYUZvcm0sICJtZWRs aW5lIikpIHsKCQlzaG93UHViTWVkU2VhcmNoKGF1dGhvcnMsIGtleXdvcmRzKTsK CX0gZWxzZSBpZiAoY2hlY2tEYk5hbWUoYUZvcm0sICJhZHMiKSkgewoJCXNob3dB ZHNTZWFyY2goYXV0aG9ycywga2V5d29yZHMpOwoJfSBlbHNlIGlmIChjaGVja0Ri TmFtZShhRm9ybSwgImNyb3NzcmVmIikpIHsKCQlzaG93Q3Jvc3NSZWZTZWFyY2go YXV0aG9ycywga2V5d29yZHMpOwoJfSBlbHNlIHsKCQl2YXIgdXJsID0gIi9hY3Rp b24vZG9TZWFyY2g/YWN0aW9uPXNlYXJjaEF1dGhvciI7CgkJZm9yICh2YXIgaT0w OyBpPGVsbXRzLmxlbmd0aDsgaSsrKSB7CgkJCWlmICghIGVsbXRzW2ldLm5hbWUp CgkJCQljb250aW51ZTsKCQkJdmFyIGFkZEVsbXQgPSBmYWxzZTsKCQkJaWYgKGVs bXRzW2ldLnR5cGUgPT0gImNoZWNrYm94IikKCQkJCWFkZEVsbXQgPSBlbG10c1tp XS5jaGVja2VkOwoJCQllbHNlCgkJCQlhZGRFbG10ID0gKGVsbXRzW2ldLnZhbHVl Lmxlbmd0aCA+IDApOwoJCQlpZiAoYWRkRWxtdCkKCQkJCXVybCArPSAiJiIgKyBl bG10c1tpXS5uYW1lICsgIj0iICsgZWxtdHNbaV0udmFsdWU7CgkJfQoJCXdpbmRv dy5sb2NhdGlvbiA9IHVybDsKCX0KfQoKLyoqCiAqCUBwYXJhbQlhQXV0aG9yQXJy YXkJYXJyYXkgc3RvcmVzIGFsbCBhdXRob3JzCiAqCUBwYXJhbQlhS2V5d29yZEFy cmF5CWFycmF5IHN0b3JlcyBhbGwga2V5d29yZHMKICovCmZ1bmN0aW9uIGdldEF1 dGhvcnNBbmRLZXl3b3JkcyhhRm9ybSwgYUF1dGhvckFycmF5LCBhS2V5d29yZEFy cmF5LCBhRm9yY2VBZGQpCnsKCXNldENoZWNrV2hlbkRlZmluZShhRm9ybS5zYXV0 aHVzZXJjYngsIHRydWUpOwoJc2V0Q2hlY2tXaGVuRGVmaW5lKGFGb3JtLmtleXVz ZXJjYngsIHRydWUpOwoKCXZhciBlbGVtZW50cyA9IGFGb3JtLmVsZW1lbnRzOwoJ dmFyIGNudEF1dGhvciA9IC0xOwoJdmFyIGNudEtleXdvcmQgPSAtMTsKCWZvciAo dmFyIGk9MDsgaTxlbGVtZW50cy5sZW5ndGg7IGkrKykKCXsKCQl2YXIgZWxtdCA9 IGVsZW1lbnRzW2ldOwoJCWlmICgoZWxtdC5uYW1lID09ICJzYXV0aGNieCIpIHx8 CgkJCShlbG10Lm5hbWUgPT0gInNhdXRodXNlcmNieCIpKQoJCXsKCQkJaWYgKGVs bXQubmFtZSA9PSAic2F1dGh1c2VyY2J4IikgewoJCQkJY250QXV0aG9yKys7CgkJ CX0KCQkJaWYgKGFGb3JjZUFkZCkgewoJCQkJZWxtdC5jaGVja2VkID0gdHJ1ZTsK CQkJfSBlbHNlIGlmICghIGVsbXQuY2hlY2tlZCkgewoJCQkJY29udGludWU7CgkJ CX0KCgkJCXZhciByZXN1bHQgPSBudWxsOwoJCQlpZiAoZWxtdC5uYW1lID09ICJz YXV0aHVzZXJjYngiKSB7CgkJCQl2YXIgc2F0ID0gYUZvcm0uc2F1dGh0ZXh0OwoJ CQkJcmVzdWx0ID0gc2F0Lmxlbmd0aCA/IHNhdFtjbnRBdXRob3JdLnZhbHVlIDog c2F0LnZhbHVlOwoJCQkJaWYgKHJlc3VsdCA9PSAiIikgewoJCQkJCWFGb3JtLnNh dXRodXNlcmNieC5jaGVja2VkID0gZmFsc2U7CgkJCQl9CgkJCX0gZWxzZSB7CgkJ CQlyZXN1bHQgPSBlbG10LnZhbHVlOwoJCQl9CgkJCWlmIChyZXN1bHQgIT0gIiIp IHsKCQkJCWFBdXRob3JBcnJheVthQXV0aG9yQXJyYXkubGVuZ3RoXSA9IHJlc3Vs dDsKCQkJfQoJCX0KCQllbHNlIGlmICgoZWxtdC5uYW1lID09ICJrZXljYngiKSB8 fAoJCQkJIChlbG10Lm5hbWUgPT0gImtleXVzZXJjYngiKSkKCQl7CgkJCWlmIChl bG10Lm5hbWUgPT0gImtleXVzZXJjYngiKSB7CgkJCQljbnRLZXl3b3JkKys7CgkJ CX0KCQkJaWYgKGFGb3JjZUFkZCkgewoJCQkJZWxtdC5jaGVja2VkID0gdHJ1ZTsK CQkJfSBlbHNlIGlmICghIGVsbXQuY2hlY2tlZCkgewoJCQkJY29udGludWU7CgkJ CX0KCgkJCXZhciByZXN1bHQgPSBudWxsOwoJCQlpZiAoZWxtdC5uYW1lID09ICJr ZXl1c2VyY2J4IikgewoJCQkJdmFyIGt3dCA9IGFGb3JtLmtleXRleHQ7CgkJCQly ZXN1bHQgPSBrd3QubGVuZ3RoID8ga3d0W2NudEtleXdvcmRdLnZhbHVlIDoga3d0 LnZhbHVlOwoJCQkJaWYgKHJlc3VsdCA9PSAiIikgewoJCQkJCWFGb3JtLmtleXVz ZXJjYnguY2hlY2tlZCA9IGZhbHNlOwoJCQkJfQoJCQl9IGVsc2UgewoJCQkJcmVz dWx0ID0gZWxtdC52YWx1ZTsKCQkJfQoJCQlpZiAocmVzdWx0ICE9ICIiKSB7CgkJ CQlhS2V5d29yZEFycmF5W2FLZXl3b3JkQXJyYXkubGVuZ3RoXSA9IHJlc3VsdDsK CQkJfQoJCX0KCX0KCS8vIHdoZW4gdGhlcmUgaXMgbm8gc2VsZWN0aW9uLCBhZGQg dGhlbSBhbGwKCWlmICgoISBhRm9yY2VBZGQpICYmIChhQXV0aG9yQXJyYXkubGVu Z3RoPT0wICYmIGFLZXl3b3JkQXJyYXkubGVuZ3RoPT0wKSkgewoJCWdldEF1dGhv cnNBbmRLZXl3b3JkcyhhRm9ybSwgYUF1dGhvckFycmF5LCBhS2V5d29yZEFycmF5 LCB0cnVlKTsKCX0KfQoKZnVuY3Rpb24gZW5jb2RlTGlua091dFVybChhVXJsKQp7 Cgl2YXIgcmVzdWx0ID0gIiI7Cglmb3IgKHZhciBpPTA7IGk8YVVybC5sZW5ndGg7 IGkrKykgewoJCXZhciBlbmNvZGVkID0gYVVybC5jaGFyQXQoaSk7CgkJc3dpdGNo IChlbmNvZGVkKSB7CgkJCWNhc2UgJz8nOgoJCQljYXNlICcmJzoJZW5jb2RlZCA9 IGVzY2FwZShlbmNvZGVkKTsJYnJlYWs7CgkJCWRlZmF1bHQ6CS8vIGRvZXMgbm90 aGluZwoJCX0KCQlyZXN1bHQgKz0gZW5jb2RlZDsKCX0KCXJldHVybiByZXN1bHQ7 Cn0KCmZ1bmN0aW9uIHNob3dFeHRlcm5hbFNlYXJjaChhRGJJZCwgYVVybCkKewoJ cG9wdXBIZWxwKCIvc2VydmxldC9saW5rb3V0P3R5cGU9c2VhcmNoJmRiaWQ9Iith RGJJZCsiJnVybD0iK2VuY29kZUxpbmtPdXRVcmwoYVVybCkpOwp9CgovLyBwdWJt ZWQgdXJsIGZvcm1hdDoKLy8gaHR0cDovL3d3dy5uY2JpLm5sbS5uaWguZ292L2Vu dHJlei9xdWVyeS5mY2dpCi8vICAgP2RvcHQ9RG9jU3VtJmNtZD1TZWFyY2gmZGI9 UHViTWVkCi8vICAgJnRlcm09QmhhdG5hZ2FyW0FVXStPUitCYWdjaGlbQVVdCi8v CmZ1bmN0aW9uIHNob3dQdWJNZWRTZWFyY2goYUF1dGhvcnMsIGFLZXl3b3JkcykK ewoJdmFyIHBtdXJsID0gImh0dHA6Ly93d3c0Lm5jYmkubmxtLm5paC5nb3YvUHVi TWVkLyI7CglpZiAoKGFBdXRob3JzLmxlbmd0aD4wKSB8fCAoYUtleXdvcmRzLmxl bmd0aD4wKSkKCXsKCQlwbXVybCA9ICJodHRwOi8vd3d3Lm5jYmkubmxtLm5paC5n b3YvZW50cmV6L3F1ZXJ5LmZjZ2k/ZG9wdD1Eb2NTdW0mY21kPVNlYXJjaCZkYj1Q dWJNZWQmdGVybT0iOwoKCQlmb3IgKHZhciBpPTA7IGk8YUF1dGhvcnMubGVuZ3Ro OyBpKyspIHsKCQkJcG11cmwgKz0gYUF1dGhvcnNbaV0ucmVwbGFjZSgiLCIsIisi KTsKCQkJcG11cmwgKz0gIltBVV0iOwoJCQlpZiAoaSA8IGFBdXRob3JzLmxlbmd0 aC0xKSB7CgkJCQlwbXVybCArPSAiK09SKyI7CgkJCX0KCQl9CgoJCWlmICgoYUF1 dGhvcnMubGVuZ3RoPjApICYmIChhS2V5d29yZHMubGVuZ3RoPjApKSB7CgkJCXBt dXJsICs9ICIrT1IrIjsKCQl9CgoJCWZvciAodmFyIGk9MDsgaTxhS2V5d29yZHMu bGVuZ3RoOyBpKyspIHsKCQkJcG11cmwgKz0gYUtleXdvcmRzW2ldLnJlcGxhY2Uo IjoiLCIgIik7CgkJCWlmIChpIDwgYUtleXdvcmRzLmxlbmd0aC0xKSB7CgkJCQlw bXVybCArPSAiK09SKyI7CgkJCX0KCQl9Cgl9CglzaG93RXh0ZXJuYWxTZWFyY2go OCwgcG11cmwpOwp9CgovLyBhZHMgdXJsIGZvcm1hdDoKLy8gaHR0cDovL2Fkc2Fi cy5oYXJ2YXJkLmVkdS9jZ2ktYmluL25waC1hYnNfY29ubmVjdD9kYl9rZXk9QVNU Ci8vCSZzb3J0PVNDT1JFJnR0bF9zeW49WUVTJnZlcnNpb249MQovLwkmdHh0X3N5 bj1ZRVMmdHh0X2xvZ2ljPUFORCZ0ZXh0PWdhbGF4eSUwRCUwQXN0YXIlMEQlMEFv Y2VhbgovLwkmYXV0X3N5bj1ZRVMmYXV0X2xvZ2ljPUFORCYmYXV0aG9yPSZhdXRo b3I9amFjayUwRCUwQXNtaXRoCmZ1bmN0aW9uIHNob3dBZHNTZWFyY2goYUF1dGhv cnMsIGFLZXl3b3JkcykKewoJdmFyIGFkc3VybCA9ICJodHRwOi8vYWRzYWJzLmhh cnZhcmQuZWR1L2Fic3RyYWN0X3NlcnZpY2UuaHRtbCI7CglpZiAoKGFBdXRob3Jz Lmxlbmd0aD4wKSB8fCAoYUtleXdvcmRzLmxlbmd0aD4wKSkKCXsKCQlhZHN1cmwg PQoJCQkiaHR0cDovL2Fkc2Ficy5oYXJ2YXJkLmVkdS9jZ2ktYmluL25waC1hYnNf Y29ubmVjdD9kYl9rZXk9QVNUIiArCgkJCSImc29ydD1TQ09SRSZ0dGxfc3luPVlF UyZ2ZXJzaW9uPTEiICsKCQkJIiZ0eHRfc3luPVlFUyZ0eHRfbG9naWM9QU5EIiAr CgkJCSImYXV0X3N5bj1ZRVMmYXV0X2xvZ2ljPUFORCI7CgoJCWlmIChhQXV0aG9y cy5sZW5ndGggPiAwKSB7CgkJCWFkc3VybCArPSAiJmF1dGhvcj0iOwoJCQlmb3Ig KHZhciBpPTA7IGk8YUF1dGhvcnMubGVuZ3RoOyBpKyspIHsKCQkJCWFkc3VybCAr PSBhQXV0aG9yc1tpXS5yZXBsYWNlKCIsIiwiJTJDIik7CgkJCQlpZiAoaSA8IGFB dXRob3JzLmxlbmd0aC0xKSB7CgkJCQkJYWRzdXJsICs9ICIlMEQlMEEiOwoJCQkJ fQoJCQl9CgkJfQoJCWlmIChhS2V5d29yZHMubGVuZ3RoID4gMCkgewoJCQlhZHN1 cmwgKz0gIiZ0ZXh0PSI7CgkJCWZvciAodmFyIGk9MDsgaTxhS2V5d29yZHMubGVu Z3RoOyBpKyspIHsKCQkJCWFkc3VybCArPSBhS2V5d29yZHNbaV07CgkJCQlpZiAo aSA8IGFLZXl3b3Jkcy5sZW5ndGgtMSkgewoJCQkJCWFkc3VybCArPSAiJTBEJTBB IjsKCQkJCX0KCQkJfQoJCX0KCX0KCXNob3dFeHRlcm5hbFNlYXJjaCg2NCwgYWRz dXJsKTsKfQoKLy8geHJzIHVybCBmb3JtYXQ6Ci8vIGh0dHA6Ly93d3cuZ29vZ2xl LmNvbS9jb2JyYW5kP3Jlc3RyaWN0PWNyb3NzcmVmJnNhPVNlYXJjaCsKLy8JJnE9 JTIyc3RlbStjZWxsJTIyKyUyMnR5cGUrMSUyMiZjb2Y9QVdQSUQ6YmJkNmQwMWU5 YTUzMDkyMgpmdW5jdGlvbiBzaG93Q3Jvc3NSZWZTZWFyY2goYUF1dGhvcnMsIGFL ZXl3b3JkcykKewoJdmFyIHhyc3VybCA9ICJodHRwOi8vd3d3Lmdvb2dsZS5jb20v Y29icmFuZD9yZXN0cmljdD1jcm9zc3JlZiZzYT1TZWFyY2grJmZpbHRlcj0wJnE9 IjsKCWlmICgoYUF1dGhvcnMubGVuZ3RoPjApIHx8IChhS2V5d29yZHMubGVuZ3Ro PjApKQoJewoJCXZhciBhcnJheSA9IFthQXV0aG9ycywgYUtleXdvcmRzXTsKCQlm b3IgKHZhciBpPTA7IGk8YXJyYXkubGVuZ3RoOyBpKyspIHsKCQkJZm9yICh2YXIg aj0wOyBqPGFycmF5W2ldLmxlbmd0aDsgaisrKSB7CgkJCQl4cnN1cmwgKz0gIiUy MiIrYXJyYXlbaV1bal0rIiUyMisiOwoJCQl9CgkJfQoJfQoJeHJzdXJsICs9ICIm Y29mPUFXUElEOmJiZDZkMDFlOWE1MzA5MjIiOwoJc2hvd0V4dGVybmFsU2VhcmNo KDE2LCB4cnN1cmwpOwp9CgovKioJY3Jvc3NyZWYgc2VhcmNoICovCmZ1bmN0aW9u IHN1Ym1pdFhyc1NlYXJjaChmcm0pCnsKCWlmICghIGZybSkgewoJCWZybSA9IGRv Y3VtZW50LmZvcm1zWydmcm1TZWFyY2gnXTsKCX0KCXZhciB4cnN1cmwgPSAiaHR0 cDovL3d3dy5nb29nbGUuY29tL2NvYnJhbmQ/IiArCgkJCQkgInJlc3RyaWN0PSIg KyBmcm0ucmVzdHJpY3QudmFsdWUgKwoJCQkJICImcT0iICsgZnJtLnNlYXJjaFRl eHQudmFsdWUgKwoJCQkJICImZmlsdGVyPTAiICsKCQkJCSAiJnNhPVNlYXJjaCsi ICsKCQkJCSAiJmNvZj1BV1BJRDpiYmQ2ZDAxZTlhNTMwOTIyIjsKCgl2YXIgdXJs ID0gIi9zZXJ2bGV0L2xpbmtvdXQ/dHlwZT1zZWFyY2gmZGJpZD0xNiZ1cmw9Iitl bmNvZGVMaW5rT3V0VXJsKHhyc3VybCk7Cgl2YXIgd2lucHJvcHMgPSAid2lkdGg9 NzUwLGhlaWdodD03MDAsdG9wPTEwLGxlZnQ9MjAsdG9vbGJhcj0xLG1lbnViYXI9 MSxyZXNpemFibGU9eWVzLHNjcm9sbGJhcnM9eWVzLHN0YXR1cz15ZXMiOwoJdmFy IHdpbiA9IHdpbmRvdy5vcGVuKHVybCwgbnVsbCwgd2lucHJvcHMpOwoJaWYgKHdp biAhPSBudWxsKSB7CgkJd2luLmZvY3VzKCk7Cgl9CglyZXR1cm4gZmFsc2U7Cn0K CnZhciBzZWFyY2hfaGlnaGxpZ2h0ID0gdHJ1ZTsKZnVuY3Rpb24gaGlnaGxpZ2h0 KCkKewoJdmFyIGZyb20gPSBzZWFyY2hfaGlnaGxpZ2h0ID8gInNlYXJjaFRlcm0i IDogInNlYXJjaE5vbmUiOwoJdmFyIHRvICAgPSBzZWFyY2hfaGlnaGxpZ2h0ID8g InNlYXJjaE5vbmUiIDogInNlYXJjaFRlcm0iOwoJdmFyIGVsbXRzID0gZG9jdW1l bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNwYW4iKTsKCWZvciAodmFyIGk9MDsg aTxlbG10cy5sZW5ndGg7IGkrKyl7CgkJdmFyIG5vZGUgPSBlbG10cy5pdGVtKGkp OwoJCWZvciAodmFyIGo9MDsgajxub2RlLmF0dHJpYnV0ZXMubGVuZ3RoOyBqKysp IHsKCQkJdmFyIGl0ZW0gPSBub2RlLmF0dHJpYnV0ZXMuaXRlbShqKTsKCQkJaWYg KChpdGVtLm5vZGVOYW1lID09ICdjbGFzcycpICYmCgkJCQkoaXRlbS5ub2RlVmFs dWUuaW5kZXhPZihmcm9tKSA9PSAwKSkgewoJCQkJbm9kZS5jbGFzc05hbWUgPSB0 byArIGl0ZW0ubm9kZVZhbHVlLnN1YnN0cmluZyhmcm9tLmxlbmd0aCk7CgkJCX0K CQl9Cgl9CglzZWFyY2hfaGlnaGxpZ2h0ID0gISBzZWFyY2hfaGlnaGxpZ2h0Owp9 CnZhciBlbWFpbFJlZ3ggPSAvXihbYS16QS1aMC05X1wuXC1dKStcQCgoW2EtekEt WjAtOVwtXSkrXC4pKyhbYS16QS1aMC05XXsyLDR9KSskLzsKZnVuY3Rpb24gaXNF bWFpbChlbWFpbCkgewogICAgaWYgKGVtYWlsLnZhbHVlKSBlbWFpbCA9IGVtYWls LnZhbHVlOyAgIC8vIGlzIGZvcm0gZmllbGQKICAgIHJldHVybiBlbWFpbFJlZ3gu dGVzdChlbWFpbCk7Cn0KZnVuY3Rpb24gY291bnRTZWxlY3RlZChzZWxlY3QpIHsK ICAgIHZhciByZXN1bHQgPSAwOwogICAgaWYgKHNlbGVjdC5vcHRpb25zKSBmb3Ig KHZhciBpID0gMDsgaSA8IHNlbGVjdC5vcHRpb25zLmxlbmd0aDsgaSsrKSBpZiAo c2VsZWN0Lm9wdGlvbnNbaV0uc2VsZWN0ZWQpIHJlc3VsdCsrOwogICAgcmV0dXJu IHJlc3VsdDsKfQpmdW5jdGlvbiBjb3VudENoZWNrZWQoZm9ybSwgZmllbGROYW1l KSB7CiAgICB2YXIgcmVzdWx0ID0gMDsKICAgIHZhciBpdGVtcyA9IGZvcm0uZWxl bWVudHNbZmllbGROYW1lXTsKICAgIGlmIChpdGVtcykgZm9yICh2YXIgaSA9IDA7 IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykgaWYgKGl0ZW1zW2ldLmNoZWNrZWQpIHJl c3VsdCsrOwogICAgcmV0dXJuIHJlc3VsdDsKfQpmdW5jdGlvbiBnZXRDb29raWUo bmFtZSkgewogICAgbmFtZSA9IG5hbWUgKyAiPSI7CiAgICB2YXIgY29va2llcyA9 IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpOwogICAgZm9yICh2YXIgaSA9IDA7 IGkgPCBjb29raWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIGMgPSBjb29r aWVzW2ldOwogICAgICAgIHdoaWxlIChjLmNoYXJBdCgwKSA9PSAnICcpIGMgPSBj LnN1YnN0cmluZygxKTsvLyBMVHJpbQogICAgICAgIGlmIChjLmluZGV4T2YobmFt ZSkgPT0gMCkgcmV0dXJuIGMuc3Vic3RyaW5nKG5hbWUubGVuZ3RoKTsKICAgIH0K ICAgIHJldHVybiBudWxsOwp9CmZ1bmN0aW9uIHN5bmNTZXNzaW9uKHNpZCwgYXRj b29raWUpIHsKICAgIGlmIChzaWQpIHsKICAgICAgICB2YXIgdXJsID0gbG9jYXRp b24uaG9zdDsKICAgICAgICB1cmwgPSB1cmwuaW5kZXhPZigic3RhZ2luZy4iKSA9 PSAwID8gdXJsLnN1YnN0cmluZyg4KSA6ICgic3RhZ2luZy4iICsgdXJsKTsKICAg ICAgICB1cmwgPSAiaHR0cDovLyIgKyB1cmwgKyAiL3Nlc3Npb24uanNwIiArICI/ SlNFU1NJT05JRD0iICsgc2lkOwogICAgICAgIGlmIChhdGNvb2tpZSkgdXJsICs9 ICImYXRjb29raWU9IiArIGF0Y29va2llOwogICAgICAgIHdpbmRvdy5fc2lkSW1n ID0gbmV3IEltYWdlOwogICAgICAgIHdpbmRvdy5fc2lkSW1nLnNyYyA9IHVybDsK ICAgIH0KfQoKZnVuY3Rpb24gY29uZmlybUFjdGlvbih1cmwsIG1zZykgewogICAg aWYgKGNvbmZpcm0obXNnKSkgZG9jdW1lbnQubG9jYXRpb24gPSB1cmw7Cn0KCmZ1 bmN0aW9uIG1zd29yZDJodG1sKHN0cikKewogICAgaWYgKHN0ciA9PSBudWxsIHx8 IHN0ci5yZXBsYWNlKC9ccy9nLCAiIikgPT0gIiIpIHsKICAgICAgICByZXR1cm4g c3RyOwogICAgfQogICAgdmFyIGFycmF5ID0gWwogICAgICAgIDgyMTEsICAgIiZu ZGFzaDsiLAogICAgICAgIDgyMTIsICAgIiZtZGFzaDsiLAogICAgICAgIDgyMTYs ICAgIiZsc3F1bzsiLAogICAgICAgIDgyMTcsICAgIiZyc3F1bzsiLAogICAgICAg IDgyMTgsICAgIiZzYnF1bzsiLAogICAgICAgIDgyMTksICAgIiYjeDIwMWI7IiwK ICAgICAgICA4MjIwLCAgICImbGRxdW87IiwKICAgICAgICA4MjIxLCAgICImcmRx dW87IiwKICAgICAgICA4MjIyLCAgICImYmRxdW87IiwKICAgICAgICA4MjIzLCAg ICImI3gyMDFmOyIsCiAgICBdOwogICAgZm9yICh2YXIgaT0wOyBpPGFycmF5Lmxl bmd0aDsgaSs9MikgewogICAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKG5ldyBSZWdF eHAoU3RyaW5nLmZyb21DaGFyQ29kZShhcnJheVtpXSksImciKSxhcnJheVtpKzFd KTsKICAgIH0KICAgIHJldHVybiBzdHI7Cn0KLy8gcmVxdWlyZXMgL3N3Zm9iamVj dC5qcwpmdW5jdGlvbiBhZGRGbGFzaE1vdmllKGlkLCBmbHYpIHsKICAgIHZhciBz byA9IG5ldyBTV0ZPYmplY3QoJy9mbHZwbGF5ZXIuc3dmJyxpZCwnMzUyJywnMjg4 JywnNycpOwoJc28uYWRkUGFyYW0oJ2FsbG93ZnVsbHNjcmVlbicsJ2ZhbHNlJyk7 Cglzby5hZGRWYXJpYWJsZSgnZmlsZScsZmx2KTsKCXNvLmFkZFZhcmlhYmxlKCd0 eXBlJywnZmx2Jyk7CiAgICBpZiAobmF2aWdhdG9yLmFwcE5hbWUuaW5kZXhPZigi TWljcm9zb2Z0IikgIT0gLTEpIHsKICAgICAgICAvLyB0aGlzIGlzIG5lZWRlZCBm b3IgSUUsIGJ1dCBpIGJyZWFrcyBHZWNrbwogICAgICAgIHNvLmFkZFZhcmlhYmxl KCd3aWR0aCcsJzM1MicpOwogICAgICAgIHNvLmFkZFZhcmlhYmxlKCdoZWlnaHQn LCcyODgnKTsKICAgIH0KICAgIHNvLndyaXRlKGlkKTsKfQo= ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=script.js Content-Type: application/x-javascript; charset=UTF-8; name=script.js Content-Location: http://pubs.acs.org/templates/jsp/_style2/script.js Content-Transfer-Encoding: Base64 Ly8gQ29tbW9ubHkgdXNlZCBmdW5jdGlvbnMgdGhhdCBkZXBlbmRzIG9uIGxheW91 dCBvZiBfc3R5bGUyIHRlbXBsYXRlCndpbmRvdy5nZXRTaXplPWZ1bmN0aW9uKCkg ewogIGlmICh0eXBlb2Yod2luZG93LmlubmVyV2lkdGgpPT0nbnVtYmVyJykgcmV0 dXJuIHt3aWR0aDp3aW5kb3cuaW5uZXJXaWR0aCwgaGVpZ2h0OiB3aW5kb3cuaW5u ZXJIZWlnaHR9CiAgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiAoZG9j dW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIHx8IGRvY3VtZW50LmRv Y3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpKSByZXR1cm4ge3dpZHRoOmRvY3Vt ZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCwgaGVpZ2h0OiBkb2N1bWVu dC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0fQogIGlmIChkb2N1bWVudC5i b2R5ICYmIChkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIHx8IGRvY3VtZW50LmJv ZHkuY2xpZW50SGVpZ2h0KSkgcmV0dXJuIHt3aWR0aDpkb2N1bWVudC5ib2R5LmNs aWVudFdpZHRoLCBoZWlnaHQ6IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0fQog IHJldHVybiB7d2lkdGg6MCxoZWlnaHQ6MH0KfQp2YXIgcmVzaXplVGltZXI7CmZ1 bmN0aW9uIGRvUmVzaXplKCkgewogIGlmIChyZXNpemVUaW1lcikgY2xlYXJUaW1l b3V0KHJlc2l6ZVRpbWVyKTsKICByZXNpemVUaW1lcj1zZXRUaW1lb3V0KCJjb250 ZW50UmVzaXplKCApIiwgMTAwKTsKICByZXR1cm4gdHJ1ZTsKfQpmdW5jdGlvbiBk b1Jlc2l6ZUhlaWdodCgpIHsKICBpZiAocmVzaXplVGltZXIpIGNsZWFyVGltZW91 dChyZXNpemVUaW1lcik7CiAgcmVzaXplVGltZXI9c2V0VGltZW91dCgiaGVpZ2h0 UmVzaXplKCApIiwgMTAwKTsKICByZXR1cm4gdHJ1ZTsKfQoKdmFyIG1pbkNvbnRl bnRXaWR0aCA9IDQ1MDsKdmFyIG1pbkNvbnRlbnRIZWlnaHQgPSA1MzA7CnZhciBj b250ZW50SG9yaXpvbnRhbE1hcmdpbnMgPSAoZG9jdW1lbnQuYWxsKSA/IDM3NSA6 IDM4OTsKdmFyIGNvbnRlbnRWZXJ0aWNhbE1hcmdpbnMgPSAwOwp2YXIgcmVzaXpl QWdhaW49dHJ1ZTsKdmFyIGlzR2Vja28gPSBuYXZpZ2F0b3IudXNlckFnZW50LnRv TG93ZXJDYXNlKCkuaW5kZXhPZigiZ2Vja28iKSArIDE7IC8vIDB+ZmFsc2UKZnVu Y3Rpb24gY29udGVudFJlc2l6ZSgpIHsKICB2YXIgd3M9d2luZG93LmdldFNpemUo KTsKICB2YXIgaD13cy5oZWlnaHQKICB2YXIgdz13cy53aWR0aAogIGlmKHcgJiYg aCkgewogICAgaCAtPSBjb250ZW50VmVydGljYWxNYXJnaW5zOwogICAgaWYgKGg8 bWluQ29udGVudEhlaWdodCkgaCA9IG1pbkNvbnRlbnRIZWlnaHQ7CiAgICB3IC09 IGNvbnRlbnRIb3Jpem9udGFsTWFyZ2luczsKICAgIGlmICh3PG1pbkNvbnRlbnRX aWR0aCkgdyA9IG1pbkNvbnRlbnRXaWR0aDsKICAgIHZhciBzdHlsZT1kb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgnQ29udGVudCcpLnN0eWxlOwogICAgc3R5bGUuaGVp Z2h0PWgrInB4IjsKICAgIHN0eWxlLndpZHRoPXcrInB4IjsKICAgIGlmIChkb2N1 bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSkgewogICAgICAgIHN0eWxlPWRvY3Vt ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JykuaXRlbSgwKS5zdHlsZTsK ICAgICAgICBzdHlsZS5oZWlnaHQ9aCsicHgiOwogICAgfQogICAgaWYgKHJlc2l6 ZUFnYWluKSB7CiAgICAgIHJlc2l6ZUFnYWluPWZhbHNlOwogICAgICBzZXRUaW1l b3V0KCJjb250ZW50UmVzaXplKCkiLCA1MCk7CiAgICB9IGVsc2UgewogICAgICBy ZXNpemVBZ2Fpbj10cnVlOyAgIC8vIGZvciBuZXh0IHJ1bgogICAgICBpZiAobG9j YXRpb24uaGFzaCkgewogICAgICAgIGlmIChpc0dlY2tvKSB7CiAgICAgICAgICBs b2NhdGlvbi5oYXNoID0gbG9jYXRpb24uaGFzaDsgLy8gc2Nyb2xsIHRvIGFuY2hv ciwgSUUgZG9lc24ndCBuZWVkIGl0LCBPcGVyYSBpcyBicm9rZW4KICAgICAgICB9 IGVsc2UgaWYgKGRvY3VtZW50LmFuY2hvcnMpIHsgICAgICAgICAgICAgICAgLy8g bWF5IGhlbHAgYnJvd3NlcnMgd2l0aCBhbmNob3JzIGNvbGxlY3Rpb24gc3VwcG9y dCAoT3BlcmEuLi4pCiAgICAgICAgICB2YXIgYW5jaG9yID0gZG9jdW1lbnQuYW5j aG9yc1tsb2NhdGlvbi5oYXNoXTsKICAgICAgICAgIGlmIChhbmNob3IgJiYgYW5j aG9yLnNjcm9sbEludG9WaWV3KSBhbmNob3Iuc2Nyb2xsSW50b1ZpZXcoKTsKICAg ICAgICB9CiAgICAgIH0KICAgIH0KICB9CiAgcmV0dXJuIHRydWU7Cn0KZnVuY3Rp b24gaGVpZ2h0UmVzaXplKCkgewogIHZhciB3cz13aW5kb3cuZ2V0U2l6ZSgpOwog IHZhciBoPXdzLmhlaWdodAogIGlmKGgpIHsKICAgIGggLT0gY29udGVudFZlcnRp Y2FsTWFyZ2luczsKICAgIGlmIChoPG1pbkNvbnRlbnRIZWlnaHQpIGggPSBtaW5D b250ZW50SGVpZ2h0OwogICAgdmFyIHN0eWxlPWRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdDb250ZW50Jykuc3R5bGU7CiAgICBzdHlsZS5oZWlnaHQ9aCsicHgiOwog ICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKSB7CiAgICAgICAg c3R5bGU9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKS5pdGVt KDApLnN0eWxlOwogICAgICAgIHN0eWxlLmhlaWdodD1oKyJweCI7CiAgICB9CiAg ICBpZiAocmVzaXplQWdhaW4pIHsKICAgICAgcmVzaXplQWdhaW49ZmFsc2U7CiAg ICAgIHNldFRpbWVvdXQoImhlaWdodFJlc2l6ZSgpIiwgNTApOwogICAgfSBlbHNl IHsKICAgICAgcmVzaXplQWdhaW49dHJ1ZTsgICAvLyBmb3IgbmV4dCBydW4KICAg ICAgaWYgKGxvY2F0aW9uLmhhc2gpIHsKICAgICAgICBpZiAoaXNHZWNrbykgewog ICAgICAgICAgbG9jYXRpb24uaGFzaCA9IGxvY2F0aW9uLmhhc2g7IC8vIHNjcm9s bCB0byBhbmNob3IsIElFIGRvZXNuJ3QgbmVlZCBpdCwgT3BlcmEgaXMgYnJva2Vu CiAgICAgICAgfSBlbHNlIGlmIChkb2N1bWVudC5hbmNob3JzKSB7ICAgICAgICAg ICAgICAgIC8vIG1heSBoZWxwIGJyb3dzZXJzIHdpdGggYW5jaG9ycyBjb2xsZWN0 aW9uIHN1cHBvcnQgKE9wZXJhLi4uKQogICAgICAgICAgdmFyIGFuY2hvciA9IGRv Y3VtZW50LmFuY2hvcnNbbG9jYXRpb24uaGFzaF07CiAgICAgICAgICBpZiAoYW5j aG9yICYmIGFuY2hvci5zY3JvbGxJbnRvVmlldykgYW5jaG9yLnNjcm9sbEludG9W aWV3KCk7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQogIHJldHVybiB0cnVl Owp9CgovKiBGdW5jdGlvbiB0byBsb2FkIGltYWdlcy4KICoJbm90ZTogbWFrZSB0 aGlzIGVtcHR5IG1ldGhvZCBzbyB0aGF0CiAqIDEpIG1pbmluaXplIGNvZGUgY2hh bmdlczsgMikgZm9yIGZ1dHVyZSBpbnRlZ3JhdGlvbjsgMykgZWFzaWVyIHRvIHRh a2UgdGhlIGZlYXR1cmUgYmFjawogKi8KCi8qIGZ1bmN0aW9uIHRoYXQgd2lsbCBi ZSBjYWxsZWQgZnJvbSBkb2N1bWVudC5vbmxvYWQgZXZlbnQKICogbWFpbiBldmVu dCBoYW5kbGluZywgZm9yIGFsbCBwYWdlcyAqLwpmdW5jdGlvbiBwcmVsb2FkKCkg ewoJbG9hZCgpOwp9CgovKiBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIGZy b20gZG9jdW1lbnQub25sb2FkIGV2ZW50CiAqIG92ZXJyaWRlIHRoaXMgZnVuY3Rp b24gdG8gZG8gaW5kaXZpZHVhbCBvbmxvYWQgZXZlbnQgKi8KZnVuY3Rpb24gbG9h ZCgpCnsKfQoKLyogRnVuY3Rpb24gdG8gc2hvdyBoZWxwIHBhZ2UgKi8KZnVuY3Rp b24gcG9wdXBIZWxwKHVybCkKewogICAgLyogRG8gbm90IHBvcHVwIG5ldyB3aW5k b3cgaWYgbGluayB0YXJnZXQgaXMgc2V0IHRvIF9zZWxmICovCiAgICB2YXIgdGhl RXZlbnQgPSB3aW5kb3cuZXZlbnQgfHwgYXJndW1lbnRzLmNhbGxlZS5jYWxsZXIu YXJndW1lbnRzWzBdOwogICAgaWYgKHRoZUV2ZW50KSB7CiAgICAgICAgdmFyIGxp bmsgPSB0aGVFdmVudC5zcmNFbGVtZW50IHx8IHRoZUV2ZW50LnRhcmdldDsKICAg ICAgICBpZiAobGluayAmJiBsaW5rLnRhcmdldCA9PSAnX3NlbGYnKSB7CiAgICAg ICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9IHVybDsKICAgICAgICAgICAgcmV0dXJu IGZhbHNlOwogICAgICAgIH0KICAgIH0KCglwb3B1cEhlbHA1NTAodXJsKTsKfQoK LyogRnVuY3Rpb24gdG8gb3BlbiB1cCBhIG5ldyBicm93c2VyIHdpbmRvdywgd2l0 aG91dCBhIG5hdmlnYXRpb24gYmFyICovCmZ1bmN0aW9uIG5ld1dpbmRvdyh1cmwp CnsKICAgIHZhciBuZXdfd2luZG93OwogICAgdmFyIHdpbmRvd1Byb3BlcnRpZXM7 CiAgICB3aW5kb3dQcm9wZXJ0aWVzID0gIndpZHRoPTc1MCxoZWlnaHQ9NzAwLHRv cD0zMCxsZWZ0PTIzMCx0b29sYmFyPTAsbWVudWJhcj0wLHJlc2l6YWJsZT0xLHNj cm9sbGJhcnM9eWVzIjsKICAgIGlmKG5ld193aW5kb3c9PW51bGwpIHsKICAgICAg IG5ld193aW5kb3cgPSB3aW5kb3cub3Blbih1cmwsbnVsbCx3aW5kb3dQcm9wZXJ0 aWVzKTsKICAgIH0gZWxzZSB7CiAgICAgICBuZXdfd2luZG93LmRvY3VtZW50LnJl cGxhY2UodXJsKTsKICAgIH0KfQoKZnVuY3Rpb24gZ29UbyggdXJsICkgewogICAg d2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7Cn0KCi8vIGZvciB1c2UgbGlrZSA8 YSBocmVmPSJ4eHgiIG9uQ2xpY2s9InJldHVybiBwYXJlbnRXaW5kb3dHb1RvKHRo aXMuaHJlZik7Ij54eHg8L2E+CmZ1bmN0aW9uIHBhcmVudFdpbmRvd0dvVG8odXJs LCBjbG9zZVNlbGYpIHsKCWlmIChzZWxmLm9wZW5lciAhPSBudWxsKSB7CgkJc2Vs Zi5vcGVuZXIubG9jYXRpb24gPSB1cmw7CgkJc2VsZi5vcGVuZXIuZm9jdXMoKTsK CX0gZWxzZSB7CgkJc2VsZi5sb2NhdGlvbiA9IHVybDsKCX0KCWlmKGNsb3NlU2Vs Zikgc2VsZi5jbG9zZSgpOwoJcmV0dXJuIGZhbHNlOwp9CgovKiBGdW5jdGlvbiB0 byBnbyB0byBzZWxlY3RlZCBpdGVtIGluIGRyb3AgZG93biBtZW51ICovCmZ1bmN0 aW9uIEdvVG8oc2VsLCB0YXJnZXRzdHIpCnsKICB2YXIgaW5kZXggPSBzZWwuc2Vs ZWN0ZWRJbmRleDsKICBpZiAoc2VsLm9wdGlvbnNbaW5kZXhdLnZhbHVlICE9ICcn KSB7CgkgaWYgKHRhcmdldHN0ciA9PSAnYmxhbmsnKSB7CgkgICB3aW5kb3cub3Bl bihzZWwub3B0aW9uc1tpbmRleF0udmFsdWUsICd3aW4xJyk7CgkgfSBlbHNlIHsK CSAgIHZhciBmcmFtZW9iajsKCSAgIGlmICgoZnJhbWVvYmogPSBldmFsKHRhcmdl dHN0cikpICE9IG51bGwpCgkJIGZyYW1lb2JqLmxvY2F0aW9uID0gc2VsLm9wdGlv bnNbaW5kZXhdLnZhbHVlOwoJIH0KICB9Cn0KCgovLy8vCi8vLwlzZWFyY2ggcmVs YXRlZAovLwoKLyoqCWZ1bmN0aW9uIHRvIHNob3cgbmV4dCBzZWFyY2ggcGFnZSAq LwpmdW5jdGlvbiBzZWFyY2hOZXh0UmVzdWx0UGFnZShhRm9ybSwgYU9mZnNldCkK ewoJdmFyIHggPSBldmFsKGFGb3JtLnN0YXJ0UGFnZS52YWx1ZSkgKyBhT2Zmc2V0 OwoJYUZvcm0uc3RhcnRQYWdlLnZhbHVlID0geDsKCWFGb3JtLnN1Ym1pdCgpOwp9 CgoKLyoqCWZ1bmN0aW9uIHRvIHN1Ym1pdCBzZWFyY2ggZm9ybSB3aXRoIGZpcnN0 IHBhZ2UgKi8KZnVuY3Rpb24gc2VhcmNoU2hvd0ZpcnN0UGFnZShhRm9ybSwgYUNo ZWNrU29ydCkKewoJaWYgKGFDaGVja1NvcnQpIHsKCQlpZiAoYUZvcm0uc29ydEJ5 WzBdLmRlZmF1bHRDaGVja2VkID09IGFGb3JtLnNvcnRCeVswXS5jaGVja2VkKSB7 CgkJCXJldHVybjsKCQl9Cgl9CgoJYUZvcm0uc3RhcnRQYWdlLnZhbHVlID0gMDsK CWFGb3JtLnN1Ym1pdCgpOwp9CgovKioJZnVuY3Rpb24gdG8gY2hhbmdlIHNvcnQg b3B0aW9uICovCmZ1bmN0aW9uIHNlYXJjaFJlc3VsdE9yZGVyQnkoYUZvcm0sIGFT b3J0KQp7CglhRm9ybS5zb3J0QnkudmFsdWUgPSBhU29ydDsKCWFGb3JtLnN1Ym1p dCgpOwp9CgovKioJZnVuY3Rpb24gdG8gcmVzdHJ1Y3Qgc2VhcmNoICovCmZ1bmN0 aW9uIHNlYXJjaFJlc3RyaWN0KGFGb3JtLCBhRmllbGQsIGFWYWx1ZSkgCnsKCXZh ciBjbGF1c2UgPSAiWyIgKyBhRmllbGQgKyAiOiBcIiIgKyBhVmFsdWUgKyAiXCJd IjsKCXZhciBhbGwgPSBhRm9ybS5hbGwudmFsdWU7CglpZiAoYWxsLmxlbmd0aCA9 PSAwKSB7CgkJYWxsID0gY2xhdXNlOwoJfSBlbHNlIHsKCQlhbGwgPSAiKCIgKyBh bGwgKyAiKSBBTkQgIiArIGNsYXVzZTsKCX0KCWFGb3JtLmFsbC52YWx1ZSA9IGFs bDsKCWFGb3JtLnN1Ym1pdCgpOwp9CgovKioJaW52b2tlIHdoZW4gYSBzZWFyY2gg cmVzdWx0IGZvcm0gaXMgYmVpbmcgc3VibWl0dGVkICovCmZ1bmN0aW9uIG9uUmVz dWx0U2VhcmNoRm9ybVN1Ym1pdChhRm9ybSkKewoJaWYgKGFGb3JtLnNlYXJjaFRl eHQgJiYKCQlhRm9ybS5zZWFyY2hUZXh0LnZhbHVlKSB7CgkJYUZvcm0uc3RhcnRQ YWdlLnZhbHVlID0gMDsKCX0KCWFGb3JtLnN1Ym1pdCgpOwp9CgoKLyoqCW1vZGlm eSBjdXJyZW50IHNlYXJjaCBxdWVyeSAqLwpmdW5jdGlvbiBvbk1vZGlmeVNlYXJj aENsaWNrKGFGb3JtKQp7Cgl2YXIgZWxtdHMgPSBhRm9ybS5lbGVtZW50czsKCWZv ciAodmFyIGk9MDsgaTxlbG10cy5sZW5ndGg7IGkrKykgewoJCWlmIChlbG10c1tp XS5uYW1lID09ICJhY3Rpb24iKSB7CgkJCWVsbXRzW2ldLnZhbHVlID0gIm1vZGlm eVNlYXJjaCI7CgkJCWFGb3JtLnN1Ym1pdCgpOwoJCQlyZXR1cm47CgkJfQoJfQoJ YWxlcnQoImNhbm5vdCBmaW5kIGZvcm06ICIgKyBhRm9ybS5uYW1lKTsKfQoKCi8q Kgl1c2VyIGNoYW5nZXMgc2VhcmNoIGhpc3RvcnkgKi8KZnVuY3Rpb24gb25DaGFu Z2VTZWFyY2hIaXN0b3J5KGFGb3JtKQp7Cgl2YXIgaW5kZXggPSBhRm9ybS5oaXN0 b3J5LnNlbGVjdGVkSW5kZXg7CglpZiAoaW5kZXggPiAwKQoJCXdpbmRvdy5sb2Nh dGlvbiA9IGFGb3JtLmhpc3Rvcnkub3B0aW9uc1tpbmRleF0udmFsdWU7Cn0KCgov KioJdXNlciBjbGlja3MgIk1hcmsgb3IgdW5tYXJrIGFsbCBpdGVtcyIgY2hlY2ti b3ggKi8KZnVuY3Rpb24gb25DbGlja01hcmtBbGwoYUZvcm0sIGFOYW1lUHJlZml4 KQp7CiAgICBpZiAoYUZvcm0gaW5zdGFuY2VvZiBTdHJpbmcpIGFGb3JtID0gZG9j dW1lbnQuZm9ybXNbYUZvcm1dOwogICAgaWYgKCEgYU5hbWVQcmVmaXgpIHsKCQlh TmFtZVByZWZpeCA9ICIiOwoJfQoKICAgIHZhciBtYXJrYWxsOwoKICAgIHRyeSB7 CiAgICAgICAgbWFya2FsbCA9IGFGb3JtLm1hcmthbGwuY2hlY2tlZDsKICAgIH0K ICAgIGNhdGNoKGVycikgeyAvLyBtYXJrYWxsIG1pZ2h0IG5vdCBiZSBpbiB0aGUg Zm9ybQogICAgICAgIG1hcmthbGwgPSAkKCdtYXJrYWxsJykuY2hlY2tlZDsKICAg IH0KCgltYXJrQWxsQ2hlY2tib3hlcyhhRm9ybSwgYU5hbWVQcmVmaXgsIG1hcmth bGwpOwp9CgoKZnVuY3Rpb24gc3VibWl0QXJ0aWNsZXMoYUZvcm0sIGFjdGlvbiwg ZXJyb3JNZXNzYWdlKSB7CglzdWJtaXRNdWx0aUFydGljbGVzKGFGb3JtLCBhY3Rp b24sIGZhbHNlLCBlcnJvck1lc3NhZ2UpOwp9CgovKioJc3VibWl0IGZvcm0gaW5z dGFudGx5ICovCmZ1bmN0aW9uIG9uU2VhcmNoUmFkaW9DbGljayhhUmFkaW8pCnsK CWRvY3VtZW50LmZvcm1zWydmcm1TZWFyY2gnXS5zdWJtaXQoKTsKfQoKCi8qKgl3 aGVuIHVzZXIgY2xpY2tzIHN1Z2dlc3RlZCBzZWFyY2ggcXVlcnkgKi8KZnVuY3Rp b24gc3VibWl0U3VnZ2VzdGVkU2VhcmNoKGFRdWVyeSkKewoJdmFyIGZybSA9IGRv Y3VtZW50LmZvcm1zWydmcm1TZWFyY2gnXTsKCWZybS5wcmV2U2VhcmNoLnZhbHVl ID0gYVF1ZXJ5LnJlcGxhY2UoL1wrL2csICIlMkIiKTsKCWZybS5zdWJtaXQoKTsK fQoKCi8qKglpbiBzdWJtaXNzaW9uIG9mIGpvdXJuYWwgc2VhcmNoICovCmZ1bmN0 aW9uIG9uU3VibWl0Sm91cm5hbFNlYXJjaCgpCnsKCXZhciB1cmwgPSAiL2FjdGlv bi9kb1NlYXJjaD9hY3Rpb249c2VhcmNoIjsKCgl2YXIgZWxtdHMgPSBkb2N1bWVu dC5mcm1Kb3VybmFsU2VhcmNoLmVsZW1lbnRzOwoJdmFyIHByZXZTZWFyY2ggPSAi IjsKCWZvciAodmFyIGk9MDsgaTxlbG10cy5sZW5ndGg7IGkrKykKCXsKCQl2YXIg bmFtZSA9IGVsbXRzW2ldLm5hbWU7CgkJdmFyIHZhbHVlID0gZWxtdHNbaV0udmFs dWU7CgkJaWYgKHZhbHVlID09ICIiKQoJCQljb250aW51ZTsKCgkJaWYgKG5hbWUu aW5kZXhPZigiZmllbGQiKSA9PSAtMSkgewoJCQl1cmwgKz0gKCImIiArIG5hbWUg KyAiPSIgKyB2YWx1ZSk7Ci8vCQl9IGVsc2UgaWYgKG5hbWUgPT0gInZvbHllYXJm aWVsZCIpIHsKLy8JCQlpZiAocHJldlNlYXJjaC5sZW5ndGggPiAwKQovLwkJCQlw cmV2U2VhcmNoICs9ICIlMjBhbmQlMjAiOwovLwkJCXByZXZTZWFyY2ggKz0KLy8J CQkJIiUyQigiICsgX3RvUXVlcnlUZXJtKCJqb3VybmFsdm9sdW1lZmllbGQiLCB2 YWx1ZSkgKwovLwkJCQkiKyIgKwovLwkJCQlfdG9RdWVyeVRlcm0oImpvdXJuYWxw dWJsaWNhdGlvbnllYXJmaWVsZCIsIHZhbHVlKSArCi8vCQkJCSIpIjsKCQl9IGVs c2UgewoJCQlpZiAocHJldlNlYXJjaC5sZW5ndGggPiAwKQoJCQkJcHJldlNlYXJj aCArPSAiKyI7CgkJCXByZXZTZWFyY2ggKz0gX3RvUXVlcnlUZXJtKG5hbWUsIHZh bHVlKTsKCQl9Cgl9CgoJdXJsICs9ICgiJnByZXZTZWFyY2g9IiArIGVzY2FwZShw cmV2U2VhcmNoKSk7Cgl3aW5kb3cubG9jYXRpb24gPSB1cmw7Cn0KCgovKioJaGVs cGVyIG1ldGhvZCBpbiBvblN1Ym1pdEpvdXJuYWxTZWFyY2goKSAqLwpmdW5jdGlv biBfdG9RdWVyeVRlcm0oYUZpZWxkLCBhVmFsdWUpCnsKCXZhciBteVZhbHVlID0g YVZhbHVlLnJlcGxhY2UoL1wiL2csICcnKTsKCXZhciBoYXNTcGMgPSBmYWxzZTsK CWZvciAodmFyIGk9YVZhbHVlLmxlbmd0aC0xOyBpPj0wOyBpLS0pIHsKCQlpZiAo YVZhbHVlLmNoYXJBdChpKSA9PSAnICcpIHsKCQkJaGFzU3BjID0gdHJ1ZTsKCQkJ YnJlYWs7CgkJfQoJfQoJaWYgKGhhc1NwYykKCQlteVZhbHVlID0gJ1wiJyArIG15 VmFsdWUgKyAnXCInOwoJcmV0dXJuICgiJTJCIiArIGFGaWVsZCArICIlM0EiICsg bXlWYWx1ZSkKfQoKCmZ1bmN0aW9uIGNoZWNrRWxlbWVudChhRm9ybSwgYU5hbWUs IGFWYWx1ZSkKewoJdmFyIGVsbXRzID0gYUZvcm0uZWxlbWVudHM7Cglmb3IgKHZh ciBpPWVsbXRzLmxlbmd0aC0xOyBpPj0wOyBpPWktMSkKCXsKCQlpZiAoKGVsbXRz W2ldLm5hbWUgPT0gYU5hbWUpICYmCgkJCShlbG10c1tpXS52YWx1ZSA9PSBhVmFs dWUpKQoJCXsKCQkJZWxtdHNbaV0uY2hlY2tlZCA9IHRydWU7CgkJCXJldHVybjsK CQl9Cgl9Cn0KCmZ1bmN0aW9uIGNoZWNrU2VhcmNoSW5wdXQoYUZvcm0pCnsKCWlm IChhRm9ybS5zZWFyY2hUZXh0LnZhbHVlID09ICJFbnRlciBLZXl3b3JkcyIpIHsK CQlhbGVydCgiUGxlYXNlIGVudGVyIHNlYXJjaCB0ZXJtcyIpOwoJfSBlbHNlIHsK CQlhRm9ybS5zdWJtaXQoKTsKCX0KfQoKZnVuY3Rpb24gY2hlY2tWYWx1ZSh2YWx1 ZSwgZXJyb3JWYWx1ZSwgZXJyb3JNZXNzYWdlKSB7CiAgICAgaWYgKHZhbHVlID09 IGVycm9yVmFsdWUpIHsKICAgICAgICAgYWxlcnQoZXJyb3JNZXNzYWdlKTsKICAg ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKfQoK Ly8vLwovLy8JZm9yIHNhdmUgc2VhcmNoCi8vCgpmdW5jdGlvbiBzZWFyY2hTYXZl UG9wdXAoYUZvcm0pCnsKCXZhciBhY2Nlc3MgPSBhRm9ybS5hY2Nlc3M7CglpZiAo YWNjZXNzICYmIGFjY2Vzcy52YWx1ZSE9J25vZmlsdGVyJykgewoJCWlmICghIGNv bmZpcm0oIlNhdmUgU2VhcmNoIHdpbGwgbm90IGluY2x1ZGUgeW91ciBBY2Nlc3Mg UmlnaHRzIGNyaXRlcmlhLCBkbyB5b3Ugd2FudCB0byBjb250aW51ZT8iKSkgewoJ CQlyZXR1cm47CgkJfQoJfQoJCgl2YXIgdXJsID0gIi9hY3Rpb24vZG9TYXZlU2Vh cmNoIjsKCXZhciBuZXdfd2luZG93OwoJdmFyIHdpbmRvd1Byb3BlcnRpZXM7Cgl3 aW5kb3dQcm9wZXJ0aWVzID0gIndpZHRoPTU1MCxoZWlnaHQ9MjUwLHRvb2xiYXI9 MCxtZW51YmFyPTAscmVzaXphYmxlPTEsc2Nyb2xsYmFycz15ZXMiOwoJaWYobmV3 X3dpbmRvdz09bnVsbCkgewoJICAgbmV3X3dpbmRvdyA9IHdpbmRvdy5vcGVuKHVy bCxudWxsLHdpbmRvd1Byb3BlcnRpZXMpOwoJfSBlbHNlIHsKCSAgIG5ld193aW5k b3cuZG9jdW1lbnQucmVwbGFjZSh1cmwpOwoJfQp9CgpmdW5jdGlvbiBnZXRTYXZl U2VhcmNoTmFtZU9iamVjdChhRm9ybSkKewoJdmFyIG9iajsKCWlmICghIGRvY3Vt ZW50LmFsbCkgewoJCXZhciBhcnIgPSBhRm9ybS5lbGVtZW50czsKCQlmb3IgKHZh ciBpPTA7ICghIG9iaikgJiYgKGk8YXJyLmxlbmd0aCk7IGkrKykgewoJCQlpZiAo YXJyW2ldLm5hbWUgPT0gInNhdmVTZWFyY2hOYW1lIikgewoJCQkJb2JqID0gYXJy W2ldOwoJCQl9CgkJfQoJfSBlbHNlIHsKCQlvYmogPSBkb2N1bWVudC5hbGwuc2F2 ZVNlYXJjaE5hbWU7Cgl9CglyZXR1cm4gb2JqOwp9CgoKZnVuY3Rpb24gcGVyZm9y bVNhdmVTZWFyY2goYUZvcm0sIGFJc0ZBSikKewoJdmFyIHNsdEFsZXJ0ID0gYUZv cm0uc2VhcmNoYWxlcnQ7CglpZiAoYUlzRkFKICYmIChzbHRBbGVydC5zZWxlY3Rl ZEluZGV4PjApKSB7CgkJYWxlcnQoIlNvcnJ5LCBlLW1haWwgYWxlcnQgZm9yIGpv dXJuYWxzIHdpdGggXG4iICsKCQkJCSJmdWxsIGFjY2VzcyByaWdodHMgaXMgbm90 IGF2YWlsYWJsZS4iKTsKCQlyZXR1cm47Cgl9CgoJdmFyIGVsbXRzID0gYUZvcm0u ZWxlbWVudHM7Cglmb3IgKHZhciBpPTA7IGk8ZWxtdHMubGVuZ3RoOyBpKyspIHsK CQlpZiAoZWxtdHNbaV0ubmFtZSA9PSAiYWN0aW9uIikgewoJCQllbG10c1tpXS52 YWx1ZSA9ICJzYXZlIjsKCQkJYUZvcm0uc3VibWl0KCk7CgkJCXJldHVybjsKCQl9 Cgl9CglhbGVydCgiZm9ybSBub3QgZm91bmQ6ICIgKyBhRm9ybS5uYW1lKTsKfQoK CmZ1bmN0aW9uIHJlc2V0RmllbGQoYUZpZWxkLCBhRGVmYXVsdFRleHQsIGFDb2xv cikKewoJaWYgKGFGaWVsZC52YWx1ZSA9PSBhRGVmYXVsdFRleHQpIHsKCQlhRmll bGQudmFsdWUgPSAiIjsKCX0KCWFGaWVsZC5zdHlsZS5jb2xvciA9IGFDb2xvcjsK fQovL2ZvciBlY29tbTIKZnVuY3Rpb24gc3VibWl0SWZWYWxpZCgpewogICAgdmFy IHggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiam91cm5hbENvZGUiKTsKICAg IHZhciBoYXNKb3VybmFsID0geC52YWx1ZSAhPSAiIjsKICAgIGlmIChoYXNKb3Vy bmFsICYmIGhhc1N1YmNyaWJlclR5cGUoKSAmJiBoYXNTdWJzY3JpcHRpb25UeXBl KCkpeyB4LmZvcm0uc3VibWl0KCk7fQp9CmZ1bmN0aW9uIHN1Ym1pdElmVHlwZXMo KXsKICAgIGlmIChoYXNTdWJjcmliZXJUeXBlKCkgJiYgaGFzU3Vic2NyaXB0aW9u VHlwZSgpKSAkKCJlY29tbWVyY2VGb3JtIikuc3VibWl0KCk7Cn0KZnVuY3Rpb24g c3VibWl0SWZTdWJzY3JpYmVyKCl7CiAgICBpZiAoaGFzU3ViY3JpYmVyVHlwZSgp KSAkKCJlY29tbWVyY2VGb3JtIikuc3VibWl0KCk7Cn0KZnVuY3Rpb24gc3VibWl0 SWZTdWJzY3JpcHRpb25UeXBlKCl7CiAgICBpZiAoaGFzU3Vic2NyaXB0aW9uVHlw ZSgpKSAkKCJlY29tbWVyY2VGb3JtIikuc3VibWl0KCk7Cn0KZnVuY3Rpb24gaGFz U3ViY3JpYmVyVHlwZSgpewogICAgcmV0dXJuIGlzQ2hlY2tlZCgkKCJpbmRpdmlk dWFsIikpIHx8IGlzQ2hlY2tlZCgkKCJpbnN0aXR1dGlvbiIpKTsKfQpmdW5jdGlv biBoYXNTdWJzY3JpcHRpb25UeXBlKCl7CiAgICByZXR1cm4gJCgiZWxlY3Ryb25p YyIpLmNoZWNrZWQgfHwgJCgicHJpbnQiKS5jaGVja2VkIHx8ICQoImNvbWJvIiku Y2hlY2tlZDsKfQovKiogdG8gcGxlYXNlIElFNiBmb3IgaGlkZGVuIGlucHV0IGVs bGVtZW50cyoqLwpmdW5jdGlvbiBpc0NoZWNrZWQoeSl7CiAgICByZXR1cm4geSAm JiAoeS50eXBlID09ICJoaWRkZW4iIHx8IHkuY2hlY2tlZCkKfQovL2VuZCBvZiBl Y29tbTIK ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=script.js Content-Type: application/x-javascript; charset=UTF-8; name=script.js Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/script.js Content-Transfer-Encoding: Base64 LyoqCWZ1bmN0aW9uIHRvIHJlc3RydWN0IHNlYXJjaCAqLw0KZnVuY3Rpb24gc2Vh cmNoUmVzdHJpY3QoYUZvcm0sIGFGaWVsZCwgYVZhbHVlLCByZXBsYWNlKQ0Kew0K ICAgIGlmIChyZXBsYWNlKSB7DQogICAgICAgIHJlbW92ZVJlc3RyaWN0aW9uc09m SW5wdXQoYUZvcm0sIGFGaWVsZCk7DQogICAgfQ0KICAgIHZhciBpbnB1dCA9IGRv Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7DQogICAgaW5wdXQudHlwZSA9 ICJoaWRkZW4iOw0KICAgIGlucHV0Lm5hbWUgPSBhRmllbGQ7DQogICAgaW5wdXQu dmFsdWUgPSBhVmFsdWU7DQogICAgYUZvcm0uc3RhcnRQYWdlLnZhbHVlID0gIiI7 DQogICAgYUZvcm0gPSAkKGFGb3JtKTsNCiAgICBhRm9ybS5hcHBlbmRDaGlsZChp bnB1dCk7DQogICAgYUZvcm0uc3VibWl0KCk7DQp9DQoNCmZ1bmN0aW9uIHJlbW92 ZUFsbFJlc3RyaWN0aW9ucyhhRm9ybSkNCnsNCiAgICBmb3IgKGkgPSAxOyBpIDwg YXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgIHJlbW92ZVJlc3RyaWN0 aW9uc09mSW5wdXQoYUZvcm0sIGFyZ3VtZW50c1tpXSk7DQogICAgfQ0KICAgIGFG b3JtLnN1Ym1pdCgpOw0KfQ0KDQpmdW5jdGlvbiByZW1vdmVSZXN0cmljdGlvbnNP ZklucHV0KGFGb3JtLCBhRmllbGQpIHsNCiAgICB2YXIgaW5wdXQgPSBhRm9ybVth RmllbGRdOw0KICAgIGlmICh0eXBlb2YgaW5wdXQgPT0gJ3VuZGVmaW5lZCcgfHwg aW5wdXQgPT0gbnVsbCkgew0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQogICAg aWYgKHR5cGVvZiBpbnB1dC5sZW5ndGggIT0gJ3VuZGVmaW5lZCcpIHsNCiAgICAg ICAgdmFyIGk7DQogICAgICAgIGZvciAoaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7 IGkrKykgew0KICAgICAgICAgICAgaW5wdXRbaV0udmFsdWUgPSAnJzsNCiAgICAg ICAgfQ0KICAgICAgICByZXR1cm4gaW5wdXQubGVuZ3RoOw0KICAgIH0gZWxzZSB7 DQogICAgICAgIGlucHV0LnZhbHVlID0gJyc7DQogICAgICAgIGlucHV0LnBhcmVu dE5vZGUucmVtb3ZlQ2hpbGQoaW5wdXQpOw0KICAgICAgICByZXR1cm4gMTsNCiAg ICB9DQp9DQoNCmZ1bmN0aW9uIHJlbW92ZVJlc3RyaWN0KGFGb3JtLCBhRmllbGQs IGFWYWx1ZSkNCnsNCiAgICB2YXIgaW5wdXQgPSBhRm9ybVthRmllbGRdOw0KICAg IGlmICh0eXBlb2YgaW5wdXQubGVuZ3RoICE9ICd1bmRlZmluZWQnKSB7DQogICAg ICAgIHZhciBpOw0KICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaW5wdXQubGVuZ3Ro OyBpKyspIHsNCiAgICAgICAgICAgIGlmIChpbnB1dFtpXS52YWx1ZSA9PSBhVmFs dWUpIHsNCiAgICAgICAgICAgICAgICBpbnB1dFtpXS52YWx1ZSA9ICcnOw0KICAg ICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfSBlbHNlIGlmIChpbnB1dC52YWx1 ZSA9PSBhVmFsdWUpIHsNCiAgICAgICAgaW5wdXQudmFsdWUgPSAnJzsNCiAgICB9 DQogICAgYUZvcm0uc3VibWl0KCk7DQp9DQoNCmZ1bmN0aW9uIHNldElucHV0KGFG b3JtLCBhRmllbGQsIGFWYWx1ZSkNCnsNCiAgICB2YXIgaW5wdXQgPSBhRm9ybVth RmllbGRdOw0KICAgIGlmICh0eXBlb2YgaW5wdXQgPT0gJ3VuZGVmaW5lZCcgfHwg aW5wdXQgPT0gbnVsbCkgew0KICAgICAgICBpbnB1dCA9IGRvY3VtZW50LmNyZWF0 ZUVsZW1lbnQoImlucHV0Iik7DQogICAgICAgIGlucHV0LnR5cGUgPSAiaGlkZGVu IjsNCiAgICAgICAgaW5wdXQubmFtZSA9IGFGaWVsZDsNCiAgICAgICAgYUZvcm0g PSAkKGFGb3JtKTsNCiAgICAgICAgYUZvcm0uYXBwZW5kQ2hpbGQoaW5wdXQpOw0K ICAgIH0NCiAgICBpZiAodHlwZW9mIGlucHV0Lmxlbmd0aCAhPSAndW5kZWZpbmVk Jykgew0KICAgICAgICB2YXIgaTsNCiAgICAgICAgZm9yIChpID0gMDsgaSA8IGlu cHV0Lmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICBpbnB1dFtpXS52YWx1ZSA9 IGFWYWx1ZTsNCiAgICAgICAgfQ0KICAgIH0gZWxzZSB7DQogICAgICAgIGlucHV0 LnZhbHVlID0gYVZhbHVlOw0KICAgIH0NCn0NCg0KZnVuY3Rpb24gc2V0SW5wdXRB bmRTdWJtaXQoYUZvcm0sIGFGaWVsZCwgYVZhbHVlKQ0Kew0KICAgIHNldElucHV0 KGFGb3JtLCBhRmllbGQsIGFWYWx1ZSk7DQogICAgYUZvcm0uc3RhcnRQYWdlLnZh bHVlID0gIiI7DQogICAgYUZvcm0uc3VibWl0KCk7DQp9DQoNCmZ1bmN0aW9uIHVw ZGF0ZUNoZWNrQm94ZXMoY29udHJvbGxpbmdJbnB1dCwgaW5wdXROYW1lKSB7DQog ICAgdmFyIGlucHV0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKGlucHV0 TmFtZSk7DQogICAgZm9yIChpID0gMDsgaSA8IGlucHV0cy5sZW5ndGg7IGkrKykg ew0KICAgICAgICBpbnB1dHNbaV0uY2hlY2tlZCA9IGNvbnRyb2xsaW5nSW5wdXQu Y2hlY2tlZDsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIHN1Ym1pdFNhdmVTZWFyY2go Zm9ybSkgew0KICAgIGZvcm0gPSAkKGZvcm0pOw0KICAgIHZhciBtYXAgPSBmb3Jt LnNlcmlhbGl6ZSh0cnVlKTsNCiAgICBtYXBbJ2FqYXgnXSA9ICd0cnVlJzsNCiAg ICBtYXBbJ3BlcmZvcm0nXSA9ICd0cnVlJzsNCiAgICBuZXcgQWpheC5SZXF1ZXN0 KCcvYWN0aW9uL2RvU2F2ZVNlYXJjaCcsIHsNCiAgICAgICAgbWV0aG9kOiAnZ2V0 JywNCiAgICAgICAgcGFyYW1ldGVyczogbWFwLA0KICAgICAgICBvbkZhaWx1cmU6 IGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgYWxlcnQoIlVuYWJsZSB0byBzYXZl IHNlYXJjaC4iKQ0KICAgICAgICB9LA0KICAgICAgICBvblN1Y2Nlc3M6IGZ1bmN0 aW9uKHRyYW5zcG9ydCkgew0KICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRyYW5z cG9ydC5yZXNwb25zZVRleHQ7DQogICAgICAgICAgICB2YXIgcmVkaXJlY3RQcmVm aXggPSAicmVkaXJlY3RUbzoiOw0KICAgICAgICAgICAgdmFyIGkgPSByZXN1bHQu aW5kZXhPZihyZWRpcmVjdFByZWZpeCk7DQogICAgICAgICAgICBpZiAocmVzdWx0 ID09ICdvaycpIHsNCiAgICAgICAgICAgICAgICBzYXZlU2VhcmNoKCdmaW5hbGl6 ZScpOw0KICAgICAgICAgICAgfSBlbHNlIGlmIChpID49IDApIHsNCiAgICAgICAg ICAgICAgICB2YXIgcmVkaXJlY3RUbyA9IHJlc3VsdC5zdWJzdHJpbmcocmVkaXJl Y3RQcmVmaXgubGVuZ3RoKTsNCiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRp b24gPSByZWRpcmVjdFRvOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAg ICAgICAgICBhbGVydCgiVW5hYmxlIHRvIHNhdmUgc2VhcmNoLiBSZWFzb246ICIg KyByZXN1bHQpDQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0NCiAg ICApOw0KfQ0KDQpmdW5jdGlvbiBmaXhBcnRpY2xlTGlua3Mob25QYWdlVGl0bGVQ YXR0ZXJuKSB7DQogICAgJCQoIiNsaW5rcyBsaVtjbGFzc349J29uUGFnZSddIiku ZWFjaChmdW5jdGlvbihlbGVtKSB7DQogICAgICAgICQoZWxlbSkucmVtb3ZlQ2xh c3NOYW1lKCdvblBhZ2UnKTsNCiAgICB9KTsNCiAgICAkJCgiI2xpbmtzIGxpIGFb dGl0bGV+PSciK29uUGFnZVRpdGxlUGF0dGVybisiJ10iKS5lYWNoKGZ1bmN0aW9u KGVsZW0pIHsNCi8vICAgICAgICBhbGVydCgiZmluZCBzdXBwbCBhbmNob3IuIHBh cmVudDogIiArICQoZWxlbSkucGFyZW50Tm9kZSk7DQogICAgICAgICQoJChlbGVt KS5wYXJlbnROb2RlKS5hZGRDbGFzc05hbWUoJ29uUGFnZScpOw0KICAgIH0pOw0K DQp9DQoNCmZ1bmN0aW9uIHNlYXJjaE5leHRSZXN1bHRQYWdlSW5TdWJqZWN0KGFG b3JtLCBhT2Zmc2V0LCBhU3ViamVjdCkNCnsNCgl2YXIgeCA9IGV2YWwoYUZvcm0u c3RhcnRQYWdlLnZhbHVlKSArIGFPZmZzZXQ7DQoJYUZvcm0uc3RhcnRQYWdlLnZh bHVlID0geDsNCglhRm9ybS5zdWJtaXQoKTsNCn0NCg0KZnVuY3Rpb24gc2VhcmNo UmVzdWx0UGFnZShhRm9ybSwgcGFnZSwgYVN1YmplY3QpDQp7DQogICAgYUZvcm0u c3RhcnRQYWdlLnZhbHVlID0gcGFnZTsNCglhRm9ybS5zdWJtaXQoKTsNCn0NCg== ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=prototype.js Content-Type: application/x-javascript; charset=UTF-8; name=prototype.js Content-Location: http://pubs.acs.org/templates/jsp/js/prototype.js Content-Transfer-Encoding: Base64 LyogIFByb3RvdHlwZSBKYXZhU2NyaXB0IGZyYW1ld29yaywgdmVyc2lvbiAxLjYu MC4zCiAqICAoYykgMjAwNS0yMDA4IFNhbSBTdGVwaGVuc29uCiAqCiAqICBQcm90 b3R5cGUgaXMgZnJlZWx5IGRpc3RyaWJ1dGFibGUgdW5kZXIgdGhlIHRlcm1zIG9m IGFuIE1JVC1zdHlsZSBsaWNlbnNlLgogKiAgRm9yIGRldGFpbHMsIHNlZSB0aGUg UHJvdG90eXBlIHdlYiBzaXRlOiBodHRwOi8vd3d3LnByb3RvdHlwZWpzLm9yZy8K ICoKICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgp2YXIgUHJvdG90eXBl ID0gewogIFZlcnNpb246ICcxLjYuMC4zJywKCiAgQnJvd3NlcjogewogICAgSUU6 ICAgICAhISh3aW5kb3cuYXR0YWNoRXZlbnQgJiYgbmF2aWdhdG9yLnVzZXJBZ2Vu dC5pbmRleE9mKCdPcGVyYScpID09PSAtMSksCiAgICBPcGVyYTogIG5hdmlnYXRv ci51c2VyQWdlbnQuaW5kZXhPZignT3BlcmEnKSA+IC0xLAogICAgV2ViS2l0OiBu YXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0FwcGxlV2ViS2l0LycpID4gLTEs CiAgICBHZWNrbzogIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignR2Vja28n KSA+IC0xICYmCiAgICAgIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignS0hU TUwnKSA9PT0gLTEsCiAgICBNb2JpbGVTYWZhcmk6ICEhbmF2aWdhdG9yLnVzZXJB Z2VudC5tYXRjaCgvQXBwbGUuKk1vYmlsZS4qU2FmYXJpLykKICB9LAoKICBCcm93 c2VyRmVhdHVyZXM6IHsKICAgIFhQYXRoOiAhIWRvY3VtZW50LmV2YWx1YXRlLAog ICAgU2VsZWN0b3JzQVBJOiAhIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IsCiAgICBF bGVtZW50RXh0ZW5zaW9uczogISF3aW5kb3cuSFRNTEVsZW1lbnQsCiAgICBTcGVj aWZpY0VsZW1lbnRFeHRlbnNpb25zOgogICAgICBkb2N1bWVudC5jcmVhdGVFbGVt ZW50KCdkaXYnKVsnX19wcm90b19fJ10gJiYKICAgICAgZG9jdW1lbnQuY3JlYXRl RWxlbWVudCgnZGl2JylbJ19fcHJvdG9fXyddICE9PQogICAgICAgIGRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoJ2Zvcm0nKVsnX19wcm90b19fJ10KICB9LAoKICBTY3Jp cHRGcmFnbWVudDogJzxzY3JpcHRbXj5dKj4oW1xcU1xcc10qPyk8XC9zY3JpcHQ+ JywKICBKU09ORmlsdGVyOiAvXlwvXCotc2VjdXJlLShbXHNcU10qKVwqXC9ccyok LywKCiAgZW1wdHlGdW5jdGlvbjogZnVuY3Rpb24oKSB7IH0sCiAgSzogZnVuY3Rp b24oeCkgeyByZXR1cm4geCB9Cn07CgppZiAoUHJvdG90eXBlLkJyb3dzZXIuTW9i aWxlU2FmYXJpKQogIFByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuU3BlY2lmaWNF bGVtZW50RXh0ZW5zaW9ucyA9IGZhbHNlOwoKCi8qIEJhc2VkIG9uIEFsZXggQXJu ZWxsJ3MgaW5oZXJpdGFuY2UgaW1wbGVtZW50YXRpb24uICovCnZhciBDbGFzcyA9 IHsKICBjcmVhdGU6IGZ1bmN0aW9uKCkgewogICAgdmFyIHBhcmVudCA9IG51bGws IHByb3BlcnRpZXMgPSAkQShhcmd1bWVudHMpOwogICAgaWYgKE9iamVjdC5pc0Z1 bmN0aW9uKHByb3BlcnRpZXNbMF0pKQogICAgICBwYXJlbnQgPSBwcm9wZXJ0aWVz LnNoaWZ0KCk7CgogICAgZnVuY3Rpb24ga2xhc3MoKSB7CiAgICAgIHRoaXMuaW5p dGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgfQoKICAgIE9iamVj dC5leHRlbmQoa2xhc3MsIENsYXNzLk1ldGhvZHMpOwogICAga2xhc3Muc3VwZXJj bGFzcyA9IHBhcmVudDsKICAgIGtsYXNzLnN1YmNsYXNzZXMgPSBbXTsKCiAgICBp ZiAocGFyZW50KSB7CiAgICAgIHZhciBzdWJjbGFzcyA9IGZ1bmN0aW9uKCkgeyB9 OwogICAgICBzdWJjbGFzcy5wcm90b3R5cGUgPSBwYXJlbnQucHJvdG90eXBlOwog ICAgICBrbGFzcy5wcm90b3R5cGUgPSBuZXcgc3ViY2xhc3M7CiAgICAgIHBhcmVu dC5zdWJjbGFzc2VzLnB1c2goa2xhc3MpOwogICAgfQoKICAgIGZvciAodmFyIGkg PSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGg7IGkrKykKICAgICAga2xhc3MuYWRk TWV0aG9kcyhwcm9wZXJ0aWVzW2ldKTsKCiAgICBpZiAoIWtsYXNzLnByb3RvdHlw ZS5pbml0aWFsaXplKQogICAgICBrbGFzcy5wcm90b3R5cGUuaW5pdGlhbGl6ZSA9 IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uOwoKICAgIGtsYXNzLnByb3RvdHlwZS5j b25zdHJ1Y3RvciA9IGtsYXNzOwoKICAgIHJldHVybiBrbGFzczsKICB9Cn07CgpD bGFzcy5NZXRob2RzID0gewogIGFkZE1ldGhvZHM6IGZ1bmN0aW9uKHNvdXJjZSkg ewogICAgdmFyIGFuY2VzdG9yICAgPSB0aGlzLnN1cGVyY2xhc3MgJiYgdGhpcy5z dXBlcmNsYXNzLnByb3RvdHlwZTsKICAgIHZhciBwcm9wZXJ0aWVzID0gT2JqZWN0 LmtleXMoc291cmNlKTsKCiAgICBpZiAoIU9iamVjdC5rZXlzKHsgdG9TdHJpbmc6 IHRydWUgfSkubGVuZ3RoKQogICAgICBwcm9wZXJ0aWVzLnB1c2goInRvU3RyaW5n IiwgInZhbHVlT2YiKTsKCiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gcHJv cGVydGllcy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICB2YXIgcHJv cGVydHkgPSBwcm9wZXJ0aWVzW2ldLCB2YWx1ZSA9IHNvdXJjZVtwcm9wZXJ0eV07 CiAgICAgIGlmIChhbmNlc3RvciAmJiBPYmplY3QuaXNGdW5jdGlvbih2YWx1ZSkg JiYKICAgICAgICAgIHZhbHVlLmFyZ3VtZW50TmFtZXMoKS5maXJzdCgpID09ICIk c3VwZXIiKSB7CiAgICAgICAgdmFyIG1ldGhvZCA9IHZhbHVlOwogICAgICAgIHZh bHVlID0gKGZ1bmN0aW9uKG0pIHsKICAgICAgICAgIHJldHVybiBmdW5jdGlvbigp IHsgcmV0dXJuIGFuY2VzdG9yW21dLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfTsK ICAgICAgICB9KShwcm9wZXJ0eSkud3JhcChtZXRob2QpOwoKICAgICAgICB2YWx1 ZS52YWx1ZU9mID0gbWV0aG9kLnZhbHVlT2YuYmluZChtZXRob2QpOwogICAgICAg IHZhbHVlLnRvU3RyaW5nID0gbWV0aG9kLnRvU3RyaW5nLmJpbmQobWV0aG9kKTsK ICAgICAgfQogICAgICB0aGlzLnByb3RvdHlwZVtwcm9wZXJ0eV0gPSB2YWx1ZTsK ICAgIH0KCiAgICByZXR1cm4gdGhpczsKICB9Cn07Cgp2YXIgQWJzdHJhY3QgPSB7 IH07CgpPYmplY3QuZXh0ZW5kID0gZnVuY3Rpb24oZGVzdGluYXRpb24sIHNvdXJj ZSkgewogIGZvciAodmFyIHByb3BlcnR5IGluIHNvdXJjZSkKICAgIGRlc3RpbmF0 aW9uW3Byb3BlcnR5XSA9IHNvdXJjZVtwcm9wZXJ0eV07CiAgcmV0dXJuIGRlc3Rp bmF0aW9uOwp9OwoKT2JqZWN0LmV4dGVuZChPYmplY3QsIHsKICBpbnNwZWN0OiBm dW5jdGlvbihvYmplY3QpIHsKICAgIHRyeSB7CiAgICAgIGlmIChPYmplY3QuaXNV bmRlZmluZWQob2JqZWN0KSkgcmV0dXJuICd1bmRlZmluZWQnOwogICAgICBpZiAo b2JqZWN0ID09PSBudWxsKSByZXR1cm4gJ251bGwnOwogICAgICByZXR1cm4gb2Jq ZWN0Lmluc3BlY3QgPyBvYmplY3QuaW5zcGVjdCgpIDogU3RyaW5nKG9iamVjdCk7 CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIGlmIChlIGluc3RhbmNlb2YgUmFuZ2VF cnJvcikgcmV0dXJuICcuLi4nOwogICAgICB0aHJvdyBlOwogICAgfQogIH0sCgog IHRvSlNPTjogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICB2YXIgdHlwZSA9IHR5cGVv ZiBvYmplY3Q7CiAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgY2FzZSAndW5kZWZp bmVkJzoKICAgICAgY2FzZSAnZnVuY3Rpb24nOgogICAgICBjYXNlICd1bmtub3du JzogcmV0dXJuOwogICAgICBjYXNlICdib29sZWFuJzogcmV0dXJuIG9iamVjdC50 b1N0cmluZygpOwogICAgfQoKICAgIGlmIChvYmplY3QgPT09IG51bGwpIHJldHVy biAnbnVsbCc7CiAgICBpZiAob2JqZWN0LnRvSlNPTikgcmV0dXJuIG9iamVjdC50 b0pTT04oKTsKICAgIGlmIChPYmplY3QuaXNFbGVtZW50KG9iamVjdCkpIHJldHVy bjsKCiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgcHJvcGVydHkg aW4gb2JqZWN0KSB7CiAgICAgIHZhciB2YWx1ZSA9IE9iamVjdC50b0pTT04ob2Jq ZWN0W3Byb3BlcnR5XSk7CiAgICAgIGlmICghT2JqZWN0LmlzVW5kZWZpbmVkKHZh bHVlKSkKICAgICAgICByZXN1bHRzLnB1c2gocHJvcGVydHkudG9KU09OKCkgKyAn OiAnICsgdmFsdWUpOwogICAgfQoKICAgIHJldHVybiAneycgKyByZXN1bHRzLmpv aW4oJywgJykgKyAnfSc7CiAgfSwKCiAgdG9RdWVyeVN0cmluZzogZnVuY3Rpb24o b2JqZWN0KSB7CiAgICByZXR1cm4gJEgob2JqZWN0KS50b1F1ZXJ5U3RyaW5nKCk7 CiAgfSwKCiAgdG9IVE1MOiBmdW5jdGlvbihvYmplY3QpIHsKICAgIHJldHVybiBv YmplY3QgJiYgb2JqZWN0LnRvSFRNTCA/IG9iamVjdC50b0hUTUwoKSA6IFN0cmlu Zy5pbnRlcnByZXQob2JqZWN0KTsKICB9LAoKICBrZXlzOiBmdW5jdGlvbihvYmpl Y3QpIHsKICAgIHZhciBrZXlzID0gW107CiAgICBmb3IgKHZhciBwcm9wZXJ0eSBp biBvYmplY3QpCiAgICAgIGtleXMucHVzaChwcm9wZXJ0eSk7CiAgICByZXR1cm4g a2V5czsKICB9LAoKICB2YWx1ZXM6IGZ1bmN0aW9uKG9iamVjdCkgewogICAgdmFy IHZhbHVlcyA9IFtdOwogICAgZm9yICh2YXIgcHJvcGVydHkgaW4gb2JqZWN0KQog ICAgICB2YWx1ZXMucHVzaChvYmplY3RbcHJvcGVydHldKTsKICAgIHJldHVybiB2 YWx1ZXM7CiAgfSwKCiAgY2xvbmU6IGZ1bmN0aW9uKG9iamVjdCkgewogICAgcmV0 dXJuIE9iamVjdC5leHRlbmQoeyB9LCBvYmplY3QpOwogIH0sCgogIGlzRWxlbWVu dDogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICByZXR1cm4gISEob2JqZWN0ICYmIG9i amVjdC5ub2RlVHlwZSA9PSAxKTsKICB9LAoKICBpc0FycmF5OiBmdW5jdGlvbihv YmplY3QpIHsKICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiB0eXBlb2Ygb2Jq ZWN0ID09ICJvYmplY3QiICYmCiAgICAgICdzcGxpY2UnIGluIG9iamVjdCAmJiAn am9pbicgaW4gb2JqZWN0OwogIH0sCgogIGlzSGFzaDogZnVuY3Rpb24ob2JqZWN0 KSB7CiAgICByZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgSGFzaDsKICB9LAoKICBp c0Z1bmN0aW9uOiBmdW5jdGlvbihvYmplY3QpIHsKICAgIHJldHVybiB0eXBlb2Yg b2JqZWN0ID09ICJmdW5jdGlvbiI7CiAgfSwKCiAgaXNTdHJpbmc6IGZ1bmN0aW9u KG9iamVjdCkgewogICAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT0gInN0cmluZyI7 CiAgfSwKCiAgaXNOdW1iZXI6IGZ1bmN0aW9uKG9iamVjdCkgewogICAgcmV0dXJu IHR5cGVvZiBvYmplY3QgPT0gIm51bWJlciI7CiAgfSwKCiAgaXNVbmRlZmluZWQ6 IGZ1bmN0aW9uKG9iamVjdCkgewogICAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT0g InVuZGVmaW5lZCI7CiAgfQp9KTsKCk9iamVjdC5leHRlbmQoRnVuY3Rpb24ucHJv dG90eXBlLCB7CiAgYXJndW1lbnROYW1lczogZnVuY3Rpb24oKSB7CiAgICB2YXIg bmFtZXMgPSB0aGlzLnRvU3RyaW5nKCkubWF0Y2goL15bXHNcKF0qZnVuY3Rpb25b XihdKlwoKFteXCldKilcKS8pWzFdCiAgICAgIC5yZXBsYWNlKC9ccysvZywgJycp LnNwbGl0KCcsJyk7CiAgICByZXR1cm4gbmFtZXMubGVuZ3RoID09IDEgJiYgIW5h bWVzWzBdID8gW10gOiBuYW1lczsKICB9LAoKICBiaW5kOiBmdW5jdGlvbigpIHsK ICAgIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMiAmJiBPYmplY3QuaXNVbmRlZmlu ZWQoYXJndW1lbnRzWzBdKSkgcmV0dXJuIHRoaXM7CiAgICB2YXIgX19tZXRob2Qg PSB0aGlzLCBhcmdzID0gJEEoYXJndW1lbnRzKSwgb2JqZWN0ID0gYXJncy5zaGlm dCgpOwogICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gX19tZXRo b2QuYXBwbHkob2JqZWN0LCBhcmdzLmNvbmNhdCgkQShhcmd1bWVudHMpKSk7CiAg ICB9CiAgfSwKCiAgYmluZEFzRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24oKSB7CiAg ICB2YXIgX19tZXRob2QgPSB0aGlzLCBhcmdzID0gJEEoYXJndW1lbnRzKSwgb2Jq ZWN0ID0gYXJncy5zaGlmdCgpOwogICAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50KSB7 CiAgICAgIHJldHVybiBfX21ldGhvZC5hcHBseShvYmplY3QsIFtldmVudCB8fCB3 aW5kb3cuZXZlbnRdLmNvbmNhdChhcmdzKSk7CiAgICB9CiAgfSwKCiAgY3Vycnk6 IGZ1bmN0aW9uKCkgewogICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4g dGhpczsKICAgIHZhciBfX21ldGhvZCA9IHRoaXMsIGFyZ3MgPSAkQShhcmd1bWVu dHMpOwogICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gX19tZXRo b2QuYXBwbHkodGhpcywgYXJncy5jb25jYXQoJEEoYXJndW1lbnRzKSkpOwogICAg fQogIH0sCgogIGRlbGF5OiBmdW5jdGlvbigpIHsKICAgIHZhciBfX21ldGhvZCA9 IHRoaXMsIGFyZ3MgPSAkQShhcmd1bWVudHMpLCB0aW1lb3V0ID0gYXJncy5zaGlm dCgpICogMTAwMDsKICAgIHJldHVybiB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlv bigpIHsKICAgICAgcmV0dXJuIF9fbWV0aG9kLmFwcGx5KF9fbWV0aG9kLCBhcmdz KTsKICAgIH0sIHRpbWVvdXQpOwogIH0sCgogIGRlZmVyOiBmdW5jdGlvbigpIHsK ICAgIHZhciBhcmdzID0gWzAuMDFdLmNvbmNhdCgkQShhcmd1bWVudHMpKTsKICAg IHJldHVybiB0aGlzLmRlbGF5LmFwcGx5KHRoaXMsIGFyZ3MpOwogIH0sCgogIHdy YXA6IGZ1bmN0aW9uKHdyYXBwZXIpIHsKICAgIHZhciBfX21ldGhvZCA9IHRoaXM7 CiAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiB3cmFwcGVyLmFw cGx5KHRoaXMsIFtfX21ldGhvZC5iaW5kKHRoaXMpXS5jb25jYXQoJEEoYXJndW1l bnRzKSkpOwogICAgfQogIH0sCgogIG1ldGhvZGl6ZTogZnVuY3Rpb24oKSB7CiAg ICBpZiAodGhpcy5fbWV0aG9kaXplZCkgcmV0dXJuIHRoaXMuX21ldGhvZGl6ZWQ7 CiAgICB2YXIgX19tZXRob2QgPSB0aGlzOwogICAgcmV0dXJuIHRoaXMuX21ldGhv ZGl6ZWQgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIF9fbWV0aG9kLmFwcGx5 KG51bGwsIFt0aGlzXS5jb25jYXQoJEEoYXJndW1lbnRzKSkpOwogICAgfTsKICB9 Cn0pOwoKRGF0ZS5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24oKSB7CiAgcmV0 dXJuICciJyArIHRoaXMuZ2V0VVRDRnVsbFllYXIoKSArICctJyArCiAgICAodGhp cy5nZXRVVENNb250aCgpICsgMSkudG9QYWRkZWRTdHJpbmcoMikgKyAnLScgKwog ICAgdGhpcy5nZXRVVENEYXRlKCkudG9QYWRkZWRTdHJpbmcoMikgKyAnVCcgKwog ICAgdGhpcy5nZXRVVENIb3VycygpLnRvUGFkZGVkU3RyaW5nKDIpICsgJzonICsK ICAgIHRoaXMuZ2V0VVRDTWludXRlcygpLnRvUGFkZGVkU3RyaW5nKDIpICsgJzon ICsKICAgIHRoaXMuZ2V0VVRDU2Vjb25kcygpLnRvUGFkZGVkU3RyaW5nKDIpICsg J1oiJzsKfTsKCnZhciBUcnkgPSB7CiAgdGhlc2U6IGZ1bmN0aW9uKCkgewogICAg dmFyIHJldHVyblZhbHVlOwoKICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBh cmd1bWVudHMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIGxh bWJkYSA9IGFyZ3VtZW50c1tpXTsKICAgICAgdHJ5IHsKICAgICAgICByZXR1cm5W YWx1ZSA9IGxhbWJkYSgpOwogICAgICAgIGJyZWFrOwogICAgICB9IGNhdGNoIChl KSB7IH0KICAgIH0KCiAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiAgfQp9OwoKUmVn RXhwLnByb3RvdHlwZS5tYXRjaCA9IFJlZ0V4cC5wcm90b3R5cGUudGVzdDsKClJl Z0V4cC5lc2NhcGUgPSBmdW5jdGlvbihzdHIpIHsKICByZXR1cm4gU3RyaW5nKHN0 cikucmVwbGFjZSgvKFsuKis/Xj0hOiR7fSgpfFtcXVwvXFxdKS9nLCAnXFwkMScp Owp9OwoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgp2YXIgUGVyaW9k aWNhbEV4ZWN1dGVyID0gQ2xhc3MuY3JlYXRlKHsKICBpbml0aWFsaXplOiBmdW5j dGlvbihjYWxsYmFjaywgZnJlcXVlbmN5KSB7CiAgICB0aGlzLmNhbGxiYWNrID0g Y2FsbGJhY2s7CiAgICB0aGlzLmZyZXF1ZW5jeSA9IGZyZXF1ZW5jeTsKICAgIHRo aXMuY3VycmVudGx5RXhlY3V0aW5nID0gZmFsc2U7CgogICAgdGhpcy5yZWdpc3Rl ckNhbGxiYWNrKCk7CiAgfSwKCiAgcmVnaXN0ZXJDYWxsYmFjazogZnVuY3Rpb24o KSB7CiAgICB0aGlzLnRpbWVyID0gc2V0SW50ZXJ2YWwodGhpcy5vblRpbWVyRXZl bnQuYmluZCh0aGlzKSwgdGhpcy5mcmVxdWVuY3kgKiAxMDAwKTsKICB9LAoKICBl eGVjdXRlOiBmdW5jdGlvbigpIHsKICAgIHRoaXMuY2FsbGJhY2sodGhpcyk7CiAg fSwKCiAgc3RvcDogZnVuY3Rpb24oKSB7CiAgICBpZiAoIXRoaXMudGltZXIpIHJl dHVybjsKICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7CiAgICB0aGlzLnRp bWVyID0gbnVsbDsKICB9LAoKICBvblRpbWVyRXZlbnQ6IGZ1bmN0aW9uKCkgewog ICAgaWYgKCF0aGlzLmN1cnJlbnRseUV4ZWN1dGluZykgewogICAgICB0cnkgewog ICAgICAgIHRoaXMuY3VycmVudGx5RXhlY3V0aW5nID0gdHJ1ZTsKICAgICAgICB0 aGlzLmV4ZWN1dGUoKTsKICAgICAgfSBmaW5hbGx5IHsKICAgICAgICB0aGlzLmN1 cnJlbnRseUV4ZWN1dGluZyA9IGZhbHNlOwogICAgICB9CiAgICB9CiAgfQp9KTsK T2JqZWN0LmV4dGVuZChTdHJpbmcsIHsKICBpbnRlcnByZXQ6IGZ1bmN0aW9uKHZh bHVlKSB7CiAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogU3RyaW5nKHZh bHVlKTsKICB9LAogIHNwZWNpYWxDaGFyOiB7CiAgICAnXGInOiAnXFxiJywKICAg ICdcdCc6ICdcXHQnLAogICAgJ1xuJzogJ1xcbicsCiAgICAnXGYnOiAnXFxmJywK ICAgICdccic6ICdcXHInLAogICAgJ1xcJzogJ1xcXFwnCiAgfQp9KTsKCk9iamVj dC5leHRlbmQoU3RyaW5nLnByb3RvdHlwZSwgewogIGdzdWI6IGZ1bmN0aW9uKHBh dHRlcm4sIHJlcGxhY2VtZW50KSB7CiAgICB2YXIgcmVzdWx0ID0gJycsIHNvdXJj ZSA9IHRoaXMsIG1hdGNoOwogICAgcmVwbGFjZW1lbnQgPSBhcmd1bWVudHMuY2Fs bGVlLnByZXBhcmVSZXBsYWNlbWVudChyZXBsYWNlbWVudCk7CgogICAgd2hpbGUg KHNvdXJjZS5sZW5ndGggPiAwKSB7CiAgICAgIGlmIChtYXRjaCA9IHNvdXJjZS5t YXRjaChwYXR0ZXJuKSkgewogICAgICAgIHJlc3VsdCArPSBzb3VyY2Uuc2xpY2Uo MCwgbWF0Y2guaW5kZXgpOwogICAgICAgIHJlc3VsdCArPSBTdHJpbmcuaW50ZXJw cmV0KHJlcGxhY2VtZW50KG1hdGNoKSk7CiAgICAgICAgc291cmNlICA9IHNvdXJj ZS5zbGljZShtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCk7CiAgICAgIH0g ZWxzZSB7CiAgICAgICAgcmVzdWx0ICs9IHNvdXJjZSwgc291cmNlID0gJyc7CiAg ICAgIH0KICAgIH0KICAgIHJldHVybiByZXN1bHQ7CiAgfSwKCiAgc3ViOiBmdW5j dGlvbihwYXR0ZXJuLCByZXBsYWNlbWVudCwgY291bnQpIHsKICAgIHJlcGxhY2Vt ZW50ID0gdGhpcy5nc3ViLnByZXBhcmVSZXBsYWNlbWVudChyZXBsYWNlbWVudCk7 CiAgICBjb3VudCA9IE9iamVjdC5pc1VuZGVmaW5lZChjb3VudCkgPyAxIDogY291 bnQ7CgogICAgcmV0dXJuIHRoaXMuZ3N1YihwYXR0ZXJuLCBmdW5jdGlvbihtYXRj aCkgewogICAgICBpZiAoLS1jb3VudCA8IDApIHJldHVybiBtYXRjaFswXTsKICAg ICAgcmV0dXJuIHJlcGxhY2VtZW50KG1hdGNoKTsKICAgIH0pOwogIH0sCgogIHNj YW46IGZ1bmN0aW9uKHBhdHRlcm4sIGl0ZXJhdG9yKSB7CiAgICB0aGlzLmdzdWIo cGF0dGVybiwgaXRlcmF0b3IpOwogICAgcmV0dXJuIFN0cmluZyh0aGlzKTsKICB9 LAoKICB0cnVuY2F0ZTogZnVuY3Rpb24obGVuZ3RoLCB0cnVuY2F0aW9uKSB7CiAg ICBsZW5ndGggPSBsZW5ndGggfHwgMzA7CiAgICB0cnVuY2F0aW9uID0gT2JqZWN0 LmlzVW5kZWZpbmVkKHRydW5jYXRpb24pID8gJy4uLicgOiB0cnVuY2F0aW9uOwog ICAgcmV0dXJuIHRoaXMubGVuZ3RoID4gbGVuZ3RoID8KICAgICAgdGhpcy5zbGlj ZSgwLCBsZW5ndGggLSB0cnVuY2F0aW9uLmxlbmd0aCkgKyB0cnVuY2F0aW9uIDog U3RyaW5nKHRoaXMpOwogIH0sCgogIHN0cmlwOiBmdW5jdGlvbigpIHsKICAgIHJl dHVybiB0aGlzLnJlcGxhY2UoL15ccysvLCAnJykucmVwbGFjZSgvXHMrJC8sICcn KTsKICB9LAoKICBzdHJpcFRhZ3M6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRo aXMucmVwbGFjZSgvPFwvP1tePl0rPi9naSwgJycpOwogIH0sCgogIHN0cmlwU2Ny aXB0czogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5yZXBsYWNlKG5ldyBS ZWdFeHAoUHJvdG90eXBlLlNjcmlwdEZyYWdtZW50LCAnaW1nJyksICcnKTsKICB9 LAoKICBleHRyYWN0U2NyaXB0czogZnVuY3Rpb24oKSB7CiAgICB2YXIgbWF0Y2hB bGwgPSBuZXcgUmVnRXhwKFByb3RvdHlwZS5TY3JpcHRGcmFnbWVudCwgJ2ltZycp OwogICAgdmFyIG1hdGNoT25lID0gbmV3IFJlZ0V4cChQcm90b3R5cGUuU2NyaXB0 RnJhZ21lbnQsICdpbScpOwogICAgcmV0dXJuICh0aGlzLm1hdGNoKG1hdGNoQWxs KSB8fCBbXSkubWFwKGZ1bmN0aW9uKHNjcmlwdFRhZykgewogICAgICByZXR1cm4g KHNjcmlwdFRhZy5tYXRjaChtYXRjaE9uZSkgfHwgWycnLCAnJ10pWzFdOwogICAg fSk7CiAgfSwKCiAgZXZhbFNjcmlwdHM6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJu IHRoaXMuZXh0cmFjdFNjcmlwdHMoKS5tYXAoZnVuY3Rpb24oc2NyaXB0KSB7IHJl dHVybiBldmFsKHNjcmlwdCkgfSk7CiAgfSwKCiAgZXNjYXBlSFRNTDogZnVuY3Rp b24oKSB7CiAgICB2YXIgc2VsZiA9IGFyZ3VtZW50cy5jYWxsZWU7CiAgICBzZWxm LnRleHQuZGF0YSA9IHRoaXM7CiAgICByZXR1cm4gc2VsZi5kaXYuaW5uZXJIVE1M OwogIH0sCgogIHVuZXNjYXBlSFRNTDogZnVuY3Rpb24oKSB7CiAgICB2YXIgZGl2 ID0gbmV3IEVsZW1lbnQoJ2RpdicpOwogICAgZGl2LmlubmVySFRNTCA9IHRoaXMu c3RyaXBUYWdzKCk7CiAgICByZXR1cm4gZGl2LmNoaWxkTm9kZXNbMF0gPyAoZGl2 LmNoaWxkTm9kZXMubGVuZ3RoID4gMSA/CiAgICAgICRBKGRpdi5jaGlsZE5vZGVz KS5pbmplY3QoJycsIGZ1bmN0aW9uKG1lbW8sIG5vZGUpIHsgcmV0dXJuIG1lbW8r bm9kZS5ub2RlVmFsdWUgfSkgOgogICAgICBkaXYuY2hpbGROb2Rlc1swXS5ub2Rl VmFsdWUpIDogJyc7CiAgfSwKCiAgdG9RdWVyeVBhcmFtczogZnVuY3Rpb24oc2Vw YXJhdG9yKSB7CiAgICB2YXIgbWF0Y2ggPSB0aGlzLnN0cmlwKCkubWF0Y2goLyhb Xj8jXSopKCMuKik/JC8pOwogICAgaWYgKCFtYXRjaCkgcmV0dXJuIHsgfTsKCiAg ICByZXR1cm4gbWF0Y2hbMV0uc3BsaXQoc2VwYXJhdG9yIHx8ICcmJykuaW5qZWN0 KHsgfSwgZnVuY3Rpb24oaGFzaCwgcGFpcikgewogICAgICBpZiAoKHBhaXIgPSBw YWlyLnNwbGl0KCc9JykpWzBdKSB7CiAgICAgICAgdmFyIGtleSA9IGRlY29kZVVS SUNvbXBvbmVudChwYWlyLnNoaWZ0KCkpOwogICAgICAgIHZhciB2YWx1ZSA9IHBh aXIubGVuZ3RoID4gMSA/IHBhaXIuam9pbignPScpIDogcGFpclswXTsKICAgICAg ICBpZiAodmFsdWUgIT0gdW5kZWZpbmVkKSB2YWx1ZSA9IGRlY29kZVVSSUNvbXBv bmVudCh2YWx1ZSk7CgogICAgICAgIGlmIChrZXkgaW4gaGFzaCkgewogICAgICAg ICAgaWYgKCFPYmplY3QuaXNBcnJheShoYXNoW2tleV0pKSBoYXNoW2tleV0gPSBb aGFzaFtrZXldXTsKICAgICAgICAgIGhhc2hba2V5XS5wdXNoKHZhbHVlKTsKICAg ICAgICB9CiAgICAgICAgZWxzZSBoYXNoW2tleV0gPSB2YWx1ZTsKICAgICAgfQog ICAgICByZXR1cm4gaGFzaDsKICAgIH0pOwogIH0sCgogIHRvQXJyYXk6IGZ1bmN0 aW9uKCkgewogICAgcmV0dXJuIHRoaXMuc3BsaXQoJycpOwogIH0sCgogIHN1Y2M6 IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuc2xpY2UoMCwgdGhpcy5sZW5n dGggLSAxKSArCiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUodGhpcy5jaGFyQ29k ZUF0KHRoaXMubGVuZ3RoIC0gMSkgKyAxKTsKICB9LAoKICB0aW1lczogZnVuY3Rp b24oY291bnQpIHsKICAgIHJldHVybiBjb3VudCA8IDEgPyAnJyA6IG5ldyBBcnJh eShjb3VudCArIDEpLmpvaW4odGhpcyk7CiAgfSwKCiAgY2FtZWxpemU6IGZ1bmN0 aW9uKCkgewogICAgdmFyIHBhcnRzID0gdGhpcy5zcGxpdCgnLScpLCBsZW4gPSBw YXJ0cy5sZW5ndGg7CiAgICBpZiAobGVuID09IDEpIHJldHVybiBwYXJ0c1swXTsK CiAgICB2YXIgY2FtZWxpemVkID0gdGhpcy5jaGFyQXQoMCkgPT0gJy0nCiAgICAg ID8gcGFydHNbMF0uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwYXJ0c1swXS5z dWJzdHJpbmcoMSkKICAgICAgOiBwYXJ0c1swXTsKCiAgICBmb3IgKHZhciBpID0g MTsgaSA8IGxlbjsgaSsrKQogICAgICBjYW1lbGl6ZWQgKz0gcGFydHNbaV0uY2hh ckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwYXJ0c1tpXS5zdWJzdHJpbmcoMSk7Cgog ICAgcmV0dXJuIGNhbWVsaXplZDsKICB9LAoKICBjYXBpdGFsaXplOiBmdW5jdGlv bigpIHsKICAgIHJldHVybiB0aGlzLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsg dGhpcy5zdWJzdHJpbmcoMSkudG9Mb3dlckNhc2UoKTsKICB9LAoKICB1bmRlcnNj b3JlOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLmdzdWIoLzo6LywgJy8n KS5nc3ViKC8oW0EtWl0rKShbQS1aXVthLXpdKS8sJyN7MX1fI3syfScpLmdzdWIo LyhbYS16XGRdKShbQS1aXSkvLCcjezF9XyN7Mn0nKS5nc3ViKC8tLywnXycpLnRv TG93ZXJDYXNlKCk7CiAgfSwKCiAgZGFzaGVyaXplOiBmdW5jdGlvbigpIHsKICAg IHJldHVybiB0aGlzLmdzdWIoL18vLCctJyk7CiAgfSwKCiAgaW5zcGVjdDogZnVu Y3Rpb24odXNlRG91YmxlUXVvdGVzKSB7CiAgICB2YXIgZXNjYXBlZFN0cmluZyA9 IHRoaXMuZ3N1YigvW1x4MDAtXHgxZlxcXS8sIGZ1bmN0aW9uKG1hdGNoKSB7CiAg ICAgIHZhciBjaGFyYWN0ZXIgPSBTdHJpbmcuc3BlY2lhbENoYXJbbWF0Y2hbMF1d OwogICAgICByZXR1cm4gY2hhcmFjdGVyID8gY2hhcmFjdGVyIDogJ1xcdTAwJyAr IG1hdGNoWzBdLmNoYXJDb2RlQXQoKS50b1BhZGRlZFN0cmluZygyLCAxNik7CiAg ICB9KTsKICAgIGlmICh1c2VEb3VibGVRdW90ZXMpIHJldHVybiAnIicgKyBlc2Nh cGVkU3RyaW5nLnJlcGxhY2UoLyIvZywgJ1xcIicpICsgJyInOwogICAgcmV0dXJu ICInIiArIGVzY2FwZWRTdHJpbmcucmVwbGFjZSgvJy9nLCAnXFxcJycpICsgIici OwogIH0sCgogIHRvSlNPTjogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5p bnNwZWN0KHRydWUpOwogIH0sCgogIHVuZmlsdGVySlNPTjogZnVuY3Rpb24oZmls dGVyKSB7CiAgICByZXR1cm4gdGhpcy5zdWIoZmlsdGVyIHx8IFByb3RvdHlwZS5K U09ORmlsdGVyLCAnI3sxfScpOwogIH0sCgogIGlzSlNPTjogZnVuY3Rpb24oKSB7 CiAgICB2YXIgc3RyID0gdGhpczsKICAgIGlmIChzdHIuYmxhbmsoKSkgcmV0dXJu IGZhbHNlOwogICAgc3RyID0gdGhpcy5yZXBsYWNlKC9cXC4vZywgJ0AnKS5yZXBs YWNlKC8iW14iXFxcblxyXSoiL2csICcnKTsKICAgIHJldHVybiAoL15bLDp7fVxb XF0wLTkuXC0rRWFlZmxuci11IFxuXHJcdF0qJC8pLnRlc3Qoc3RyKTsKICB9LAoK ICBldmFsSlNPTjogZnVuY3Rpb24oc2FuaXRpemUpIHsKICAgIHZhciBqc29uID0g dGhpcy51bmZpbHRlckpTT04oKTsKICAgIHRyeSB7CiAgICAgIGlmICghc2FuaXRp emUgfHwganNvbi5pc0pTT04oKSkgcmV0dXJuIGV2YWwoJygnICsganNvbiArICcp Jyk7CiAgICB9IGNhdGNoIChlKSB7IH0KICAgIHRocm93IG5ldyBTeW50YXhFcnJv cignQmFkbHkgZm9ybWVkIEpTT04gc3RyaW5nOiAnICsgdGhpcy5pbnNwZWN0KCkp OwogIH0sCgogIGluY2x1ZGU6IGZ1bmN0aW9uKHBhdHRlcm4pIHsKICAgIHJldHVy biB0aGlzLmluZGV4T2YocGF0dGVybikgPiAtMTsKICB9LAoKICBzdGFydHNXaXRo OiBmdW5jdGlvbihwYXR0ZXJuKSB7CiAgICByZXR1cm4gdGhpcy5pbmRleE9mKHBh dHRlcm4pID09PSAwOwogIH0sCgogIGVuZHNXaXRoOiBmdW5jdGlvbihwYXR0ZXJu KSB7CiAgICB2YXIgZCA9IHRoaXMubGVuZ3RoIC0gcGF0dGVybi5sZW5ndGg7CiAg ICByZXR1cm4gZCA+PSAwICYmIHRoaXMubGFzdEluZGV4T2YocGF0dGVybikgPT09 IGQ7CiAgfSwKCiAgZW1wdHk6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMg PT0gJyc7CiAgfSwKCiAgYmxhbms6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIC9e XHMqJC8udGVzdCh0aGlzKTsKICB9LAoKICBpbnRlcnBvbGF0ZTogZnVuY3Rpb24o b2JqZWN0LCBwYXR0ZXJuKSB7CiAgICByZXR1cm4gbmV3IFRlbXBsYXRlKHRoaXMs IHBhdHRlcm4pLmV2YWx1YXRlKG9iamVjdCk7CiAgfQp9KTsKCmlmIChQcm90b3R5 cGUuQnJvd3Nlci5XZWJLaXQgfHwgUHJvdG90eXBlLkJyb3dzZXIuSUUpIE9iamVj dC5leHRlbmQoU3RyaW5nLnByb3RvdHlwZSwgewogIGVzY2FwZUhUTUw6IGZ1bmN0 aW9uKCkgewogICAgcmV0dXJuIHRoaXMucmVwbGFjZSgvJi9nLCcmYW1wOycpLnJl cGxhY2UoLzwvZywnJmx0OycpLnJlcGxhY2UoLz4vZywnJmd0OycpOwogIH0sCiAg dW5lc2NhcGVIVE1MOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLnN0cmlw VGFncygpLnJlcGxhY2UoLyZhbXA7L2csJyYnKS5yZXBsYWNlKC8mbHQ7L2csJzwn KS5yZXBsYWNlKC8mZ3Q7L2csJz4nKTsKICB9Cn0pOwoKU3RyaW5nLnByb3RvdHlw ZS5nc3ViLnByZXBhcmVSZXBsYWNlbWVudCA9IGZ1bmN0aW9uKHJlcGxhY2VtZW50 KSB7CiAgaWYgKE9iamVjdC5pc0Z1bmN0aW9uKHJlcGxhY2VtZW50KSkgcmV0dXJu IHJlcGxhY2VtZW50OwogIHZhciB0ZW1wbGF0ZSA9IG5ldyBUZW1wbGF0ZShyZXBs YWNlbWVudCk7CiAgcmV0dXJuIGZ1bmN0aW9uKG1hdGNoKSB7IHJldHVybiB0ZW1w bGF0ZS5ldmFsdWF0ZShtYXRjaCkgfTsKfTsKClN0cmluZy5wcm90b3R5cGUucGFy c2VRdWVyeSA9IFN0cmluZy5wcm90b3R5cGUudG9RdWVyeVBhcmFtczsKCk9iamVj dC5leHRlbmQoU3RyaW5nLnByb3RvdHlwZS5lc2NhcGVIVE1MLCB7CiAgZGl2OiAg ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksCiAgdGV4dDogZG9jdW1lbnQu Y3JlYXRlVGV4dE5vZGUoJycpCn0pOwoKU3RyaW5nLnByb3RvdHlwZS5lc2NhcGVI VE1MLmRpdi5hcHBlbmRDaGlsZChTdHJpbmcucHJvdG90eXBlLmVzY2FwZUhUTUwu dGV4dCk7Cgp2YXIgVGVtcGxhdGUgPSBDbGFzcy5jcmVhdGUoewogIGluaXRpYWxp emU6IGZ1bmN0aW9uKHRlbXBsYXRlLCBwYXR0ZXJuKSB7CiAgICB0aGlzLnRlbXBs YXRlID0gdGVtcGxhdGUudG9TdHJpbmcoKTsKICAgIHRoaXMucGF0dGVybiA9IHBh dHRlcm4gfHwgVGVtcGxhdGUuUGF0dGVybjsKICB9LAoKICBldmFsdWF0ZTogZnVu Y3Rpb24ob2JqZWN0KSB7CiAgICBpZiAoT2JqZWN0LmlzRnVuY3Rpb24ob2JqZWN0 LnRvVGVtcGxhdGVSZXBsYWNlbWVudHMpKQogICAgICBvYmplY3QgPSBvYmplY3Qu dG9UZW1wbGF0ZVJlcGxhY2VtZW50cygpOwoKICAgIHJldHVybiB0aGlzLnRlbXBs YXRlLmdzdWIodGhpcy5wYXR0ZXJuLCBmdW5jdGlvbihtYXRjaCkgewogICAgICBp ZiAob2JqZWN0ID09IG51bGwpIHJldHVybiAnJzsKCiAgICAgIHZhciBiZWZvcmUg PSBtYXRjaFsxXSB8fCAnJzsKICAgICAgaWYgKGJlZm9yZSA9PSAnXFwnKSByZXR1 cm4gbWF0Y2hbMl07CgogICAgICB2YXIgY3R4ID0gb2JqZWN0LCBleHByID0gbWF0 Y2hbM107CiAgICAgIHZhciBwYXR0ZXJuID0gL14oW14uW10rfFxbKCg/Oi4qP1te XFxdKT8pXF0pKFwufFxbfCQpLzsKICAgICAgbWF0Y2ggPSBwYXR0ZXJuLmV4ZWMo ZXhwcik7CiAgICAgIGlmIChtYXRjaCA9PSBudWxsKSByZXR1cm4gYmVmb3JlOwoK ICAgICAgd2hpbGUgKG1hdGNoICE9IG51bGwpIHsKICAgICAgICB2YXIgY29tcCA9 IG1hdGNoWzFdLnN0YXJ0c1dpdGgoJ1snKSA/IG1hdGNoWzJdLmdzdWIoJ1xcXFxd JywgJ10nKSA6IG1hdGNoWzFdOwogICAgICAgIGN0eCA9IGN0eFtjb21wXTsKICAg ICAgICBpZiAobnVsbCA9PSBjdHggfHwgJycgPT0gbWF0Y2hbM10pIGJyZWFrOwog ICAgICAgIGV4cHIgPSBleHByLnN1YnN0cmluZygnWycgPT0gbWF0Y2hbM10gPyBt YXRjaFsxXS5sZW5ndGggOiBtYXRjaFswXS5sZW5ndGgpOwogICAgICAgIG1hdGNo ID0gcGF0dGVybi5leGVjKGV4cHIpOwogICAgICB9CgogICAgICByZXR1cm4gYmVm b3JlICsgU3RyaW5nLmludGVycHJldChjdHgpOwogICAgfSk7CiAgfQp9KTsKVGVt cGxhdGUuUGF0dGVybiA9IC8oXnwufFxyfFxuKSgjXHsoLio/KVx9KS87Cgp2YXIg JGJyZWFrID0geyB9OwoKdmFyIEVudW1lcmFibGUgPSB7CiAgZWFjaDogZnVuY3Rp b24oaXRlcmF0b3IsIGNvbnRleHQpIHsKICAgIHZhciBpbmRleCA9IDA7CiAgICB0 cnkgewogICAgICB0aGlzLl9lYWNoKGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAgICAg aXRlcmF0b3IuY2FsbChjb250ZXh0LCB2YWx1ZSwgaW5kZXgrKyk7CiAgICAgIH0p OwogICAgfSBjYXRjaCAoZSkgewogICAgICBpZiAoZSAhPSAkYnJlYWspIHRocm93 IGU7CiAgICB9CiAgICByZXR1cm4gdGhpczsKICB9LAoKICBlYWNoU2xpY2U6IGZ1 bmN0aW9uKG51bWJlciwgaXRlcmF0b3IsIGNvbnRleHQpIHsKICAgIHZhciBpbmRl eCA9IC1udW1iZXIsIHNsaWNlcyA9IFtdLCBhcnJheSA9IHRoaXMudG9BcnJheSgp OwogICAgaWYgKG51bWJlciA8IDEpIHJldHVybiBhcnJheTsKICAgIHdoaWxlICgo aW5kZXggKz0gbnVtYmVyKSA8IGFycmF5Lmxlbmd0aCkKICAgICAgc2xpY2VzLnB1 c2goYXJyYXkuc2xpY2UoaW5kZXgsIGluZGV4K251bWJlcikpOwogICAgcmV0dXJu IHNsaWNlcy5jb2xsZWN0KGl0ZXJhdG9yLCBjb250ZXh0KTsKICB9LAoKICBhbGw6 IGZ1bmN0aW9uKGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0 ZXJhdG9yIHx8IFByb3RvdHlwZS5LOwogICAgdmFyIHJlc3VsdCA9IHRydWU7CiAg ICB0aGlzLmVhY2goZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAgIHJlc3Vs dCA9IHJlc3VsdCAmJiAhIWl0ZXJhdG9yLmNhbGwoY29udGV4dCwgdmFsdWUsIGlu ZGV4KTsKICAgICAgaWYgKCFyZXN1bHQpIHRocm93ICRicmVhazsKICAgIH0pOwog ICAgcmV0dXJuIHJlc3VsdDsKICB9LAoKICBhbnk6IGZ1bmN0aW9uKGl0ZXJhdG9y LCBjb250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yIHx8IFByb3RvdHlw ZS5LOwogICAgdmFyIHJlc3VsdCA9IGZhbHNlOwogICAgdGhpcy5lYWNoKGZ1bmN0 aW9uKHZhbHVlLCBpbmRleCkgewogICAgICBpZiAocmVzdWx0ID0gISFpdGVyYXRv ci5jYWxsKGNvbnRleHQsIHZhbHVlLCBpbmRleCkpCiAgICAgICAgdGhyb3cgJGJy ZWFrOwogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0OwogIH0sCgogIGNvbGxlY3Q6 IGZ1bmN0aW9uKGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0 ZXJhdG9yIHx8IFByb3RvdHlwZS5LOwogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAg IHRoaXMuZWFjaChmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHsKICAgICAgcmVzdWx0 cy5wdXNoKGl0ZXJhdG9yLmNhbGwoY29udGV4dCwgdmFsdWUsIGluZGV4KSk7CiAg ICB9KTsKICAgIHJldHVybiByZXN1bHRzOwogIH0sCgogIGRldGVjdDogZnVuY3Rp b24oaXRlcmF0b3IsIGNvbnRleHQpIHsKICAgIHZhciByZXN1bHQ7CiAgICB0aGlz LmVhY2goZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAgIGlmIChpdGVyYXRv ci5jYWxsKGNvbnRleHQsIHZhbHVlLCBpbmRleCkpIHsKICAgICAgICByZXN1bHQg PSB2YWx1ZTsKICAgICAgICB0aHJvdyAkYnJlYWs7CiAgICAgIH0KICAgIH0pOwog ICAgcmV0dXJuIHJlc3VsdDsKICB9LAoKICBmaW5kQWxsOiBmdW5jdGlvbihpdGVy YXRvciwgY29udGV4dCkgewogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIHRoaXMu ZWFjaChmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHsKICAgICAgaWYgKGl0ZXJhdG9y LmNhbGwoY29udGV4dCwgdmFsdWUsIGluZGV4KSkKICAgICAgICByZXN1bHRzLnB1 c2godmFsdWUpOwogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0czsKICB9LAoKICBn cmVwOiBmdW5jdGlvbihmaWx0ZXIsIGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBp dGVyYXRvciA9IGl0ZXJhdG9yIHx8IFByb3RvdHlwZS5LOwogICAgdmFyIHJlc3Vs dHMgPSBbXTsKCiAgICBpZiAoT2JqZWN0LmlzU3RyaW5nKGZpbHRlcikpCiAgICAg IGZpbHRlciA9IG5ldyBSZWdFeHAoZmlsdGVyKTsKCiAgICB0aGlzLmVhY2goZnVu Y3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAgIGlmIChmaWx0ZXIubWF0Y2godmFs dWUpKQogICAgICAgIHJlc3VsdHMucHVzaChpdGVyYXRvci5jYWxsKGNvbnRleHQs IHZhbHVlLCBpbmRleCkpOwogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0czsKICB9 LAoKICBpbmNsdWRlOiBmdW5jdGlvbihvYmplY3QpIHsKICAgIGlmIChPYmplY3Qu aXNGdW5jdGlvbih0aGlzLmluZGV4T2YpKQogICAgICBpZiAodGhpcy5pbmRleE9m KG9iamVjdCkgIT0gLTEpIHJldHVybiB0cnVlOwoKICAgIHZhciBmb3VuZCA9IGZh bHNlOwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAgIGlmICh2 YWx1ZSA9PSBvYmplY3QpIHsKICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAg dGhyb3cgJGJyZWFrOwogICAgICB9CiAgICB9KTsKICAgIHJldHVybiBmb3VuZDsK ICB9LAoKICBpbkdyb3Vwc09mOiBmdW5jdGlvbihudW1iZXIsIGZpbGxXaXRoKSB7 CiAgICBmaWxsV2l0aCA9IE9iamVjdC5pc1VuZGVmaW5lZChmaWxsV2l0aCkgPyBu dWxsIDogZmlsbFdpdGg7CiAgICByZXR1cm4gdGhpcy5lYWNoU2xpY2UobnVtYmVy LCBmdW5jdGlvbihzbGljZSkgewogICAgICB3aGlsZShzbGljZS5sZW5ndGggPCBu dW1iZXIpIHNsaWNlLnB1c2goZmlsbFdpdGgpOwogICAgICByZXR1cm4gc2xpY2U7 CiAgICB9KTsKICB9LAoKICBpbmplY3Q6IGZ1bmN0aW9uKG1lbW8sIGl0ZXJhdG9y LCBjb250ZXh0KSB7CiAgICB0aGlzLmVhY2goZnVuY3Rpb24odmFsdWUsIGluZGV4 KSB7CiAgICAgIG1lbW8gPSBpdGVyYXRvci5jYWxsKGNvbnRleHQsIG1lbW8sIHZh bHVlLCBpbmRleCk7CiAgICB9KTsKICAgIHJldHVybiBtZW1vOwogIH0sCgogIGlu dm9rZTogZnVuY3Rpb24obWV0aG9kKSB7CiAgICB2YXIgYXJncyA9ICRBKGFyZ3Vt ZW50cykuc2xpY2UoMSk7CiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24odmFs dWUpIHsKICAgICAgcmV0dXJuIHZhbHVlW21ldGhvZF0uYXBwbHkodmFsdWUsIGFy Z3MpOwogICAgfSk7CiAgfSwKCiAgbWF4OiBmdW5jdGlvbihpdGVyYXRvciwgY29u dGV4dCkgewogICAgaXRlcmF0b3IgPSBpdGVyYXRvciB8fCBQcm90b3R5cGUuSzsK ICAgIHZhciByZXN1bHQ7CiAgICB0aGlzLmVhY2goZnVuY3Rpb24odmFsdWUsIGlu ZGV4KSB7CiAgICAgIHZhbHVlID0gaXRlcmF0b3IuY2FsbChjb250ZXh0LCB2YWx1 ZSwgaW5kZXgpOwogICAgICBpZiAocmVzdWx0ID09IG51bGwgfHwgdmFsdWUgPj0g cmVzdWx0KQogICAgICAgIHJlc3VsdCA9IHZhbHVlOwogICAgfSk7CiAgICByZXR1 cm4gcmVzdWx0OwogIH0sCgogIG1pbjogZnVuY3Rpb24oaXRlcmF0b3IsIGNvbnRl eHQpIHsKICAgIGl0ZXJhdG9yID0gaXRlcmF0b3IgfHwgUHJvdG90eXBlLks7CiAg ICB2YXIgcmVzdWx0OwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZhbHVlLCBpbmRl eCkgewogICAgICB2YWx1ZSA9IGl0ZXJhdG9yLmNhbGwoY29udGV4dCwgdmFsdWUs IGluZGV4KTsKICAgICAgaWYgKHJlc3VsdCA9PSBudWxsIHx8IHZhbHVlIDwgcmVz dWx0KQogICAgICAgIHJlc3VsdCA9IHZhbHVlOwogICAgfSk7CiAgICByZXR1cm4g cmVzdWx0OwogIH0sCgogIHBhcnRpdGlvbjogZnVuY3Rpb24oaXRlcmF0b3IsIGNv bnRleHQpIHsKICAgIGl0ZXJhdG9yID0gaXRlcmF0b3IgfHwgUHJvdG90eXBlLks7 CiAgICB2YXIgdHJ1ZXMgPSBbXSwgZmFsc2VzID0gW107CiAgICB0aGlzLmVhY2go ZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAgIChpdGVyYXRvci5jYWxsKGNv bnRleHQsIHZhbHVlLCBpbmRleCkgPwogICAgICAgIHRydWVzIDogZmFsc2VzKS5w dXNoKHZhbHVlKTsKICAgIH0pOwogICAgcmV0dXJuIFt0cnVlcywgZmFsc2VzXTsK ICB9LAoKICBwbHVjazogZnVuY3Rpb24ocHJvcGVydHkpIHsKICAgIHZhciByZXN1 bHRzID0gW107CiAgICB0aGlzLmVhY2goZnVuY3Rpb24odmFsdWUpIHsKICAgICAg cmVzdWx0cy5wdXNoKHZhbHVlW3Byb3BlcnR5XSk7CiAgICB9KTsKICAgIHJldHVy biByZXN1bHRzOwogIH0sCgogIHJlamVjdDogZnVuY3Rpb24oaXRlcmF0b3IsIGNv bnRleHQpIHsKICAgIHZhciByZXN1bHRzID0gW107CiAgICB0aGlzLmVhY2goZnVu Y3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAgIGlmICghaXRlcmF0b3IuY2FsbChj b250ZXh0LCB2YWx1ZSwgaW5kZXgpKQogICAgICAgIHJlc3VsdHMucHVzaCh2YWx1 ZSk7CiAgICB9KTsKICAgIHJldHVybiByZXN1bHRzOwogIH0sCgogIHNvcnRCeTog ZnVuY3Rpb24oaXRlcmF0b3IsIGNvbnRleHQpIHsKICAgIHJldHVybiB0aGlzLm1h cChmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHsKICAgICAgcmV0dXJuIHsKICAgICAg ICB2YWx1ZTogdmFsdWUsCiAgICAgICAgY3JpdGVyaWE6IGl0ZXJhdG9yLmNhbGwo Y29udGV4dCwgdmFsdWUsIGluZGV4KQogICAgICB9OwogICAgfSkuc29ydChmdW5j dGlvbihsZWZ0LCByaWdodCkgewogICAgICB2YXIgYSA9IGxlZnQuY3JpdGVyaWEs IGIgPSByaWdodC5jcml0ZXJpYTsKICAgICAgcmV0dXJuIGEgPCBiID8gLTEgOiBh ID4gYiA/IDEgOiAwOwogICAgfSkucGx1Y2soJ3ZhbHVlJyk7CiAgfSwKCiAgdG9B cnJheTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5tYXAoKTsKICB9LAoK ICB6aXA6IGZ1bmN0aW9uKCkgewogICAgdmFyIGl0ZXJhdG9yID0gUHJvdG90eXBl LkssIGFyZ3MgPSAkQShhcmd1bWVudHMpOwogICAgaWYgKE9iamVjdC5pc0Z1bmN0 aW9uKGFyZ3MubGFzdCgpKSkKICAgICAgaXRlcmF0b3IgPSBhcmdzLnBvcCgpOwoK ICAgIHZhciBjb2xsZWN0aW9ucyA9IFt0aGlzXS5jb25jYXQoYXJncykubWFwKCRB KTsKICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHsK ICAgICAgcmV0dXJuIGl0ZXJhdG9yKGNvbGxlY3Rpb25zLnBsdWNrKGluZGV4KSk7 CiAgICB9KTsKICB9LAoKICBzaXplOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0 aGlzLnRvQXJyYXkoKS5sZW5ndGg7CiAgfSwKCiAgaW5zcGVjdDogZnVuY3Rpb24o KSB7CiAgICByZXR1cm4gJyM8RW51bWVyYWJsZTonICsgdGhpcy50b0FycmF5KCku aW5zcGVjdCgpICsgJz4nOwogIH0KfTsKCk9iamVjdC5leHRlbmQoRW51bWVyYWJs ZSwgewogIG1hcDogICAgIEVudW1lcmFibGUuY29sbGVjdCwKICBmaW5kOiAgICBF bnVtZXJhYmxlLmRldGVjdCwKICBzZWxlY3Q6ICBFbnVtZXJhYmxlLmZpbmRBbGws CiAgZmlsdGVyOiAgRW51bWVyYWJsZS5maW5kQWxsLAogIG1lbWJlcjogIEVudW1l cmFibGUuaW5jbHVkZSwKICBlbnRyaWVzOiBFbnVtZXJhYmxlLnRvQXJyYXksCiAg ZXZlcnk6ICAgRW51bWVyYWJsZS5hbGwsCiAgc29tZTogICAgRW51bWVyYWJsZS5h bnkKfSk7CmZ1bmN0aW9uICRBKGl0ZXJhYmxlKSB7CiAgaWYgKCFpdGVyYWJsZSkg cmV0dXJuIFtdOwogIGlmIChpdGVyYWJsZS50b0FycmF5KSByZXR1cm4gaXRlcmFi bGUudG9BcnJheSgpOwogIHZhciBsZW5ndGggPSBpdGVyYWJsZS5sZW5ndGggfHwg MCwgcmVzdWx0cyA9IG5ldyBBcnJheShsZW5ndGgpOwogIHdoaWxlIChsZW5ndGgt LSkgcmVzdWx0c1tsZW5ndGhdID0gaXRlcmFibGVbbGVuZ3RoXTsKICByZXR1cm4g cmVzdWx0czsKfQoKaWYgKFByb3RvdHlwZS5Ccm93c2VyLldlYktpdCkgewogICRB ID0gZnVuY3Rpb24oaXRlcmFibGUpIHsKICAgIGlmICghaXRlcmFibGUpIHJldHVy biBbXTsKICAgIC8vIEluIFNhZmFyaSwgb25seSB1c2UgdGhlIGB0b0FycmF5YCBt ZXRob2QgaWYgaXQncyBub3QgYSBOb2RlTGlzdC4KICAgIC8vIEEgTm9kZUxpc3Qg aXMgYSBmdW5jdGlvbiwgaGFzIGFuIGZ1bmN0aW9uIGBpdGVtYCBwcm9wZXJ0eSwg YW5kIGEgbnVtZXJpYwogICAgLy8gYGxlbmd0aGAgcHJvcGVydHkuIEFkYXB0ZWQg ZnJvbSBHb29nbGUgRG9jdHlwZS4KICAgIGlmICghKHR5cGVvZiBpdGVyYWJsZSA9 PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgaXRlcmFibGUubGVuZ3RoID09PQogICAg ICAgICdudW1iZXInICYmIHR5cGVvZiBpdGVyYWJsZS5pdGVtID09PSAnZnVuY3Rp b24nKSAmJiBpdGVyYWJsZS50b0FycmF5KQogICAgICByZXR1cm4gaXRlcmFibGUu dG9BcnJheSgpOwogICAgdmFyIGxlbmd0aCA9IGl0ZXJhYmxlLmxlbmd0aCB8fCAw LCByZXN1bHRzID0gbmV3IEFycmF5KGxlbmd0aCk7CiAgICB3aGlsZSAobGVuZ3Ro LS0pIHJlc3VsdHNbbGVuZ3RoXSA9IGl0ZXJhYmxlW2xlbmd0aF07CiAgICByZXR1 cm4gcmVzdWx0czsKICB9Owp9CgpBcnJheS5mcm9tID0gJEE7CgpPYmplY3QuZXh0 ZW5kKEFycmF5LnByb3RvdHlwZSwgRW51bWVyYWJsZSk7CgppZiAoIUFycmF5LnBy b3RvdHlwZS5fcmV2ZXJzZSkgQXJyYXkucHJvdG90eXBlLl9yZXZlcnNlID0gQXJy YXkucHJvdG90eXBlLnJldmVyc2U7CgpPYmplY3QuZXh0ZW5kKEFycmF5LnByb3Rv dHlwZSwgewogIF9lYWNoOiBmdW5jdGlvbihpdGVyYXRvcikgewogICAgZm9yICh2 YXIgaSA9IDAsIGxlbmd0aCA9IHRoaXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKysp CiAgICAgIGl0ZXJhdG9yKHRoaXNbaV0pOwogIH0sCgogIGNsZWFyOiBmdW5jdGlv bigpIHsKICAgIHRoaXMubGVuZ3RoID0gMDsKICAgIHJldHVybiB0aGlzOwogIH0s CgogIGZpcnN0OiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzWzBdOwogIH0s CgogIGxhc3Q6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXNbdGhpcy5sZW5n dGggLSAxXTsKICB9LAoKICBjb21wYWN0OiBmdW5jdGlvbigpIHsKICAgIHJldHVy biB0aGlzLnNlbGVjdChmdW5jdGlvbih2YWx1ZSkgewogICAgICByZXR1cm4gdmFs dWUgIT0gbnVsbDsKICAgIH0pOwogIH0sCgogIGZsYXR0ZW46IGZ1bmN0aW9uKCkg ewogICAgcmV0dXJuIHRoaXMuaW5qZWN0KFtdLCBmdW5jdGlvbihhcnJheSwgdmFs dWUpIHsKICAgICAgcmV0dXJuIGFycmF5LmNvbmNhdChPYmplY3QuaXNBcnJheSh2 YWx1ZSkgPwogICAgICAgIHZhbHVlLmZsYXR0ZW4oKSA6IFt2YWx1ZV0pOwogICAg fSk7CiAgfSwKCiAgd2l0aG91dDogZnVuY3Rpb24oKSB7CiAgICB2YXIgdmFsdWVz ID0gJEEoYXJndW1lbnRzKTsKICAgIHJldHVybiB0aGlzLnNlbGVjdChmdW5jdGlv bih2YWx1ZSkgewogICAgICByZXR1cm4gIXZhbHVlcy5pbmNsdWRlKHZhbHVlKTsK ICAgIH0pOwogIH0sCgogIHJldmVyc2U6IGZ1bmN0aW9uKGlubGluZSkgewogICAg cmV0dXJuIChpbmxpbmUgIT09IGZhbHNlID8gdGhpcyA6IHRoaXMudG9BcnJheSgp KS5fcmV2ZXJzZSgpOwogIH0sCgogIHJlZHVjZTogZnVuY3Rpb24oKSB7CiAgICBy ZXR1cm4gdGhpcy5sZW5ndGggPiAxID8gdGhpcyA6IHRoaXNbMF07CiAgfSwKCiAg dW5pcTogZnVuY3Rpb24oc29ydGVkKSB7CiAgICByZXR1cm4gdGhpcy5pbmplY3Qo W10sIGZ1bmN0aW9uKGFycmF5LCB2YWx1ZSwgaW5kZXgpIHsKICAgICAgaWYgKDAg PT0gaW5kZXggfHwgKHNvcnRlZCA/IGFycmF5Lmxhc3QoKSAhPSB2YWx1ZSA6ICFh cnJheS5pbmNsdWRlKHZhbHVlKSkpCiAgICAgICAgYXJyYXkucHVzaCh2YWx1ZSk7 CiAgICAgIHJldHVybiBhcnJheTsKICAgIH0pOwogIH0sCgogIGludGVyc2VjdDog ZnVuY3Rpb24oYXJyYXkpIHsKICAgIHJldHVybiB0aGlzLnVuaXEoKS5maW5kQWxs KGZ1bmN0aW9uKGl0ZW0pIHsKICAgICAgcmV0dXJuIGFycmF5LmRldGVjdChmdW5j dGlvbih2YWx1ZSkgeyByZXR1cm4gaXRlbSA9PT0gdmFsdWUgfSk7CiAgICB9KTsK ICB9LAoKICBjbG9uZTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gW10uY29uY2F0 KHRoaXMpOwogIH0sCgogIHNpemU6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRo aXMubGVuZ3RoOwogIH0sCgogIGluc3BlY3Q6IGZ1bmN0aW9uKCkgewogICAgcmV0 dXJuICdbJyArIHRoaXMubWFwKE9iamVjdC5pbnNwZWN0KS5qb2luKCcsICcpICsg J10nOwogIH0sCgogIHRvSlNPTjogZnVuY3Rpb24oKSB7CiAgICB2YXIgcmVzdWx0 cyA9IFtdOwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKG9iamVjdCkgewogICAgICB2 YXIgdmFsdWUgPSBPYmplY3QudG9KU09OKG9iamVjdCk7CiAgICAgIGlmICghT2Jq ZWN0LmlzVW5kZWZpbmVkKHZhbHVlKSkgcmVzdWx0cy5wdXNoKHZhbHVlKTsKICAg IH0pOwogICAgcmV0dXJuICdbJyArIHJlc3VsdHMuam9pbignLCAnKSArICddJzsK ICB9Cn0pOwoKLy8gdXNlIG5hdGl2ZSBicm93c2VyIEpTIDEuNiBpbXBsZW1lbnRh dGlvbiBpZiBhdmFpbGFibGUKaWYgKE9iamVjdC5pc0Z1bmN0aW9uKEFycmF5LnBy b3RvdHlwZS5mb3JFYWNoKSkKICBBcnJheS5wcm90b3R5cGUuX2VhY2ggPSBBcnJh eS5wcm90b3R5cGUuZm9yRWFjaDsKCmlmICghQXJyYXkucHJvdG90eXBlLmluZGV4 T2YpIEFycmF5LnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24oaXRlbSwgaSkg ewogIGkgfHwgKGkgPSAwKTsKICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGg7CiAg aWYgKGkgPCAwKSBpID0gbGVuZ3RoICsgaTsKICBmb3IgKDsgaSA8IGxlbmd0aDsg aSsrKQogICAgaWYgKHRoaXNbaV0gPT09IGl0ZW0pIHJldHVybiBpOwogIHJldHVy biAtMTsKfTsKCmlmICghQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mKSBBcnJh eS5wcm90b3R5cGUubGFzdEluZGV4T2YgPSBmdW5jdGlvbihpdGVtLCBpKSB7CiAg aSA9IGlzTmFOKGkpID8gdGhpcy5sZW5ndGggOiAoaSA8IDAgPyB0aGlzLmxlbmd0 aCArIGkgOiBpKSArIDE7CiAgdmFyIG4gPSB0aGlzLnNsaWNlKDAsIGkpLnJldmVy c2UoKS5pbmRleE9mKGl0ZW0pOwogIHJldHVybiAobiA8IDApID8gbiA6IGkgLSBu IC0gMTsKfTsKCkFycmF5LnByb3RvdHlwZS50b0FycmF5ID0gQXJyYXkucHJvdG90 eXBlLmNsb25lOwoKZnVuY3Rpb24gJHcoc3RyaW5nKSB7CiAgaWYgKCFPYmplY3Qu aXNTdHJpbmcoc3RyaW5nKSkgcmV0dXJuIFtdOwogIHN0cmluZyA9IHN0cmluZy5z dHJpcCgpOwogIHJldHVybiBzdHJpbmcgPyBzdHJpbmcuc3BsaXQoL1xzKy8pIDog W107Cn0KCmlmIChQcm90b3R5cGUuQnJvd3Nlci5PcGVyYSl7CiAgQXJyYXkucHJv dG90eXBlLmNvbmNhdCA9IGZ1bmN0aW9uKCkgewogICAgdmFyIGFycmF5ID0gW107 CiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gdGhpcy5sZW5ndGg7IGkgPCBs ZW5ndGg7IGkrKykgYXJyYXkucHVzaCh0aGlzW2ldKTsKICAgIGZvciAodmFyIGkg PSAwLCBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKysp IHsKICAgICAgaWYgKE9iamVjdC5pc0FycmF5KGFyZ3VtZW50c1tpXSkpIHsKICAg ICAgICBmb3IgKHZhciBqID0gMCwgYXJyYXlMZW5ndGggPSBhcmd1bWVudHNbaV0u bGVuZ3RoOyBqIDwgYXJyYXlMZW5ndGg7IGorKykKICAgICAgICAgIGFycmF5LnB1 c2goYXJndW1lbnRzW2ldW2pdKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBhcnJh eS5wdXNoKGFyZ3VtZW50c1tpXSk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBh cnJheTsKICB9Owp9Ck9iamVjdC5leHRlbmQoTnVtYmVyLnByb3RvdHlwZSwgewog IHRvQ29sb3JQYXJ0OiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLnRvUGFk ZGVkU3RyaW5nKDIsIDE2KTsKICB9LAoKICBzdWNjOiBmdW5jdGlvbigpIHsKICAg IHJldHVybiB0aGlzICsgMTsKICB9LAoKICB0aW1lczogZnVuY3Rpb24oaXRlcmF0 b3IsIGNvbnRleHQpIHsKICAgICRSKDAsIHRoaXMsIHRydWUpLmVhY2goaXRlcmF0 b3IsIGNvbnRleHQpOwogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgdG9QYWRkZWRT dHJpbmc6IGZ1bmN0aW9uKGxlbmd0aCwgcmFkaXgpIHsKICAgIHZhciBzdHJpbmcg PSB0aGlzLnRvU3RyaW5nKHJhZGl4IHx8IDEwKTsKICAgIHJldHVybiAnMCcudGlt ZXMobGVuZ3RoIC0gc3RyaW5nLmxlbmd0aCkgKyBzdHJpbmc7CiAgfSwKCiAgdG9K U09OOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiBpc0Zpbml0ZSh0aGlzKSA/IHRo aXMudG9TdHJpbmcoKSA6ICdudWxsJzsKICB9Cn0pOwoKJHcoJ2FicyByb3VuZCBj ZWlsIGZsb29yJykuZWFjaChmdW5jdGlvbihtZXRob2QpewogIE51bWJlci5wcm90 b3R5cGVbbWV0aG9kXSA9IE1hdGhbbWV0aG9kXS5tZXRob2RpemUoKTsKfSk7CmZ1 bmN0aW9uICRIKG9iamVjdCkgewogIHJldHVybiBuZXcgSGFzaChvYmplY3QpOwp9 OwoKdmFyIEhhc2ggPSBDbGFzcy5jcmVhdGUoRW51bWVyYWJsZSwgKGZ1bmN0aW9u KCkgewoKICBmdW5jdGlvbiB0b1F1ZXJ5UGFpcihrZXksIHZhbHVlKSB7CiAgICBp ZiAoT2JqZWN0LmlzVW5kZWZpbmVkKHZhbHVlKSkgcmV0dXJuIGtleTsKICAgIHJl dHVybiBrZXkgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nLmludGVy cHJldCh2YWx1ZSkpOwogIH0KCiAgcmV0dXJuIHsKICAgIGluaXRpYWxpemU6IGZ1 bmN0aW9uKG9iamVjdCkgewogICAgICB0aGlzLl9vYmplY3QgPSBPYmplY3QuaXNI YXNoKG9iamVjdCkgPyBvYmplY3QudG9PYmplY3QoKSA6IE9iamVjdC5jbG9uZShv YmplY3QpOwogICAgfSwKCiAgICBfZWFjaDogZnVuY3Rpb24oaXRlcmF0b3IpIHsK ICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuX29iamVjdCkgewogICAgICAgIHZh ciB2YWx1ZSA9IHRoaXMuX29iamVjdFtrZXldLCBwYWlyID0gW2tleSwgdmFsdWVd OwogICAgICAgIHBhaXIua2V5ID0ga2V5OwogICAgICAgIHBhaXIudmFsdWUgPSB2 YWx1ZTsKICAgICAgICBpdGVyYXRvcihwYWlyKTsKICAgICAgfQogICAgfSwKCiAg ICBzZXQ6IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKICAgICAgcmV0dXJuIHRoaXMu X29iamVjdFtrZXldID0gdmFsdWU7CiAgICB9LAoKICAgIGdldDogZnVuY3Rpb24o a2V5KSB7CiAgICAgIC8vIHNpbXVsYXRpbmcgcG9vcmx5IHN1cHBvcnRlZCBoYXNP d25Qcm9wZXJ0eQogICAgICBpZiAodGhpcy5fb2JqZWN0W2tleV0gIT09IE9iamVj dC5wcm90b3R5cGVba2V5XSkKICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0W2tl eV07CiAgICB9LAoKICAgIHVuc2V0OiBmdW5jdGlvbihrZXkpIHsKICAgICAgdmFy IHZhbHVlID0gdGhpcy5fb2JqZWN0W2tleV07CiAgICAgIGRlbGV0ZSB0aGlzLl9v YmplY3Rba2V5XTsKICAgICAgcmV0dXJuIHZhbHVlOwogICAgfSwKCiAgICB0b09i amVjdDogZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiBPYmplY3QuY2xvbmUodGhp cy5fb2JqZWN0KTsKICAgIH0sCgogICAga2V5czogZnVuY3Rpb24oKSB7CiAgICAg IHJldHVybiB0aGlzLnBsdWNrKCdrZXknKTsKICAgIH0sCgogICAgdmFsdWVzOiBm dW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMucGx1Y2soJ3ZhbHVlJyk7CiAg ICB9LAoKICAgIGluZGV4OiBmdW5jdGlvbih2YWx1ZSkgewogICAgICB2YXIgbWF0 Y2ggPSB0aGlzLmRldGVjdChmdW5jdGlvbihwYWlyKSB7CiAgICAgICAgcmV0dXJu IHBhaXIudmFsdWUgPT09IHZhbHVlOwogICAgICB9KTsKICAgICAgcmV0dXJuIG1h dGNoICYmIG1hdGNoLmtleTsKICAgIH0sCgogICAgbWVyZ2U6IGZ1bmN0aW9uKG9i amVjdCkgewogICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLnVwZGF0ZShvYmplY3Qp OwogICAgfSwKCiAgICB1cGRhdGU6IGZ1bmN0aW9uKG9iamVjdCkgewogICAgICBy ZXR1cm4gbmV3IEhhc2gob2JqZWN0KS5pbmplY3QodGhpcywgZnVuY3Rpb24ocmVz dWx0LCBwYWlyKSB7CiAgICAgICAgcmVzdWx0LnNldChwYWlyLmtleSwgcGFpci52 YWx1ZSk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgfSk7CiAgICB9LAoK ICAgIHRvUXVlcnlTdHJpbmc6IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gdGhp cy5pbmplY3QoW10sIGZ1bmN0aW9uKHJlc3VsdHMsIHBhaXIpIHsKICAgICAgICB2 YXIga2V5ID0gZW5jb2RlVVJJQ29tcG9uZW50KHBhaXIua2V5KSwgdmFsdWVzID0g cGFpci52YWx1ZTsKCiAgICAgICAgaWYgKHZhbHVlcyAmJiB0eXBlb2YgdmFsdWVz ID09ICdvYmplY3QnKSB7CiAgICAgICAgICBpZiAoT2JqZWN0LmlzQXJyYXkodmFs dWVzKSkKICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHMuY29uY2F0KHZhbHVlcy5t YXAodG9RdWVyeVBhaXIuY3Vycnkoa2V5KSkpOwogICAgICAgIH0gZWxzZSByZXN1 bHRzLnB1c2godG9RdWVyeVBhaXIoa2V5LCB2YWx1ZXMpKTsKICAgICAgICByZXR1 cm4gcmVzdWx0czsKICAgICAgfSkuam9pbignJicpOwogICAgfSwKCiAgICBpbnNw ZWN0OiBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuICcjPEhhc2g6eycgKyB0aGlz Lm1hcChmdW5jdGlvbihwYWlyKSB7CiAgICAgICAgcmV0dXJuIHBhaXIubWFwKE9i amVjdC5pbnNwZWN0KS5qb2luKCc6ICcpOwogICAgICB9KS5qb2luKCcsICcpICsg J30+JzsKICAgIH0sCgogICAgdG9KU09OOiBmdW5jdGlvbigpIHsKICAgICAgcmV0 dXJuIE9iamVjdC50b0pTT04odGhpcy50b09iamVjdCgpKTsKICAgIH0sCgogICAg Y2xvbmU6IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gbmV3IEhhc2godGhpcyk7 CiAgICB9CiAgfQp9KSgpKTsKCkhhc2gucHJvdG90eXBlLnRvVGVtcGxhdGVSZXBs YWNlbWVudHMgPSBIYXNoLnByb3RvdHlwZS50b09iamVjdDsKSGFzaC5mcm9tID0g JEg7CnZhciBPYmplY3RSYW5nZSA9IENsYXNzLmNyZWF0ZShFbnVtZXJhYmxlLCB7 CiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oc3RhcnQsIGVuZCwgZXhjbHVzaXZlKSB7 CiAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7CiAgICB0aGlzLmVuZCA9IGVuZDsKICAg IHRoaXMuZXhjbHVzaXZlID0gZXhjbHVzaXZlOwogIH0sCgogIF9lYWNoOiBmdW5j dGlvbihpdGVyYXRvcikgewogICAgdmFyIHZhbHVlID0gdGhpcy5zdGFydDsKICAg IHdoaWxlICh0aGlzLmluY2x1ZGUodmFsdWUpKSB7CiAgICAgIGl0ZXJhdG9yKHZh bHVlKTsKICAgICAgdmFsdWUgPSB2YWx1ZS5zdWNjKCk7CiAgICB9CiAgfSwKCiAg aW5jbHVkZTogZnVuY3Rpb24odmFsdWUpIHsKICAgIGlmICh2YWx1ZSA8IHRoaXMu c3RhcnQpCiAgICAgIHJldHVybiBmYWxzZTsKICAgIGlmICh0aGlzLmV4Y2x1c2l2 ZSkKICAgICAgcmV0dXJuIHZhbHVlIDwgdGhpcy5lbmQ7CiAgICByZXR1cm4gdmFs dWUgPD0gdGhpcy5lbmQ7CiAgfQp9KTsKCnZhciAkUiA9IGZ1bmN0aW9uKHN0YXJ0 LCBlbmQsIGV4Y2x1c2l2ZSkgewogIHJldHVybiBuZXcgT2JqZWN0UmFuZ2Uoc3Rh cnQsIGVuZCwgZXhjbHVzaXZlKTsKfTsKCnZhciBBamF4ID0gewogIGdldFRyYW5z cG9ydDogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gVHJ5LnRoZXNlKAogICAgICBm dW5jdGlvbigpIHtyZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0KCl9LAogICAgICBm dW5jdGlvbigpIHtyZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoJ01zeG1sMi5YTUxI VFRQJyl9LAogICAgICBmdW5jdGlvbigpIHtyZXR1cm4gbmV3IEFjdGl2ZVhPYmpl Y3QoJ01pY3Jvc29mdC5YTUxIVFRQJyl9CiAgICApIHx8IGZhbHNlOwogIH0sCgog IGFjdGl2ZVJlcXVlc3RDb3VudDogMAp9OwoKQWpheC5SZXNwb25kZXJzID0gewog IHJlc3BvbmRlcnM6IFtdLAoKICBfZWFjaDogZnVuY3Rpb24oaXRlcmF0b3IpIHsK ICAgIHRoaXMucmVzcG9uZGVycy5fZWFjaChpdGVyYXRvcik7CiAgfSwKCiAgcmVn aXN0ZXI6IGZ1bmN0aW9uKHJlc3BvbmRlcikgewogICAgaWYgKCF0aGlzLmluY2x1 ZGUocmVzcG9uZGVyKSkKICAgICAgdGhpcy5yZXNwb25kZXJzLnB1c2gocmVzcG9u ZGVyKTsKICB9LAoKICB1bnJlZ2lzdGVyOiBmdW5jdGlvbihyZXNwb25kZXIpIHsK ICAgIHRoaXMucmVzcG9uZGVycyA9IHRoaXMucmVzcG9uZGVycy53aXRob3V0KHJl c3BvbmRlcik7CiAgfSwKCiAgZGlzcGF0Y2g6IGZ1bmN0aW9uKGNhbGxiYWNrLCBy ZXF1ZXN0LCB0cmFuc3BvcnQsIGpzb24pIHsKICAgIHRoaXMuZWFjaChmdW5jdGlv bihyZXNwb25kZXIpIHsKICAgICAgaWYgKE9iamVjdC5pc0Z1bmN0aW9uKHJlc3Bv bmRlcltjYWxsYmFja10pKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHJlc3Bv bmRlcltjYWxsYmFja10uYXBwbHkocmVzcG9uZGVyLCBbcmVxdWVzdCwgdHJhbnNw b3J0LCBqc29uXSk7CiAgICAgICAgfSBjYXRjaCAoZSkgeyB9CiAgICAgIH0KICAg IH0pOwogIH0KfTsKCk9iamVjdC5leHRlbmQoQWpheC5SZXNwb25kZXJzLCBFbnVt ZXJhYmxlKTsKCkFqYXguUmVzcG9uZGVycy5yZWdpc3Rlcih7CiAgb25DcmVhdGU6 ICAgZnVuY3Rpb24oKSB7IEFqYXguYWN0aXZlUmVxdWVzdENvdW50KysgfSwKICBv bkNvbXBsZXRlOiBmdW5jdGlvbigpIHsgQWpheC5hY3RpdmVSZXF1ZXN0Q291bnQt LSB9Cn0pOwoKQWpheC5CYXNlID0gQ2xhc3MuY3JlYXRlKHsKICBpbml0aWFsaXpl OiBmdW5jdGlvbihvcHRpb25zKSB7CiAgICB0aGlzLm9wdGlvbnMgPSB7CiAgICAg IG1ldGhvZDogICAgICAgJ3Bvc3QnLAogICAgICBhc3luY2hyb25vdXM6IHRydWUs CiAgICAgIGNvbnRlbnRUeXBlOiAgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJs ZW5jb2RlZCcsCiAgICAgIGVuY29kaW5nOiAgICAgJ1VURi04JywKICAgICAgcGFy YW1ldGVyczogICAnJywKICAgICAgZXZhbEpTT046ICAgICB0cnVlLAogICAgICBl dmFsSlM6ICAgICAgIHRydWUKICAgIH07CiAgICBPYmplY3QuZXh0ZW5kKHRoaXMu b3B0aW9ucywgb3B0aW9ucyB8fCB7IH0pOwoKICAgIHRoaXMub3B0aW9ucy5tZXRo b2QgPSB0aGlzLm9wdGlvbnMubWV0aG9kLnRvTG93ZXJDYXNlKCk7CgogICAgaWYg KE9iamVjdC5pc1N0cmluZyh0aGlzLm9wdGlvbnMucGFyYW1ldGVycykpCiAgICAg IHRoaXMub3B0aW9ucy5wYXJhbWV0ZXJzID0gdGhpcy5vcHRpb25zLnBhcmFtZXRl cnMudG9RdWVyeVBhcmFtcygpOwogICAgZWxzZSBpZiAoT2JqZWN0LmlzSGFzaCh0 aGlzLm9wdGlvbnMucGFyYW1ldGVycykpCiAgICAgIHRoaXMub3B0aW9ucy5wYXJh bWV0ZXJzID0gdGhpcy5vcHRpb25zLnBhcmFtZXRlcnMudG9PYmplY3QoKTsKICB9 Cn0pOwoKQWpheC5SZXF1ZXN0ID0gQ2xhc3MuY3JlYXRlKEFqYXguQmFzZSwgewog IF9jb21wbGV0ZTogZmFsc2UsCgogIGluaXRpYWxpemU6IGZ1bmN0aW9uKCRzdXBl ciwgdXJsLCBvcHRpb25zKSB7CiAgICAkc3VwZXIob3B0aW9ucyk7CiAgICB0aGlz LnRyYW5zcG9ydCA9IEFqYXguZ2V0VHJhbnNwb3J0KCk7CiAgICB0aGlzLnJlcXVl c3QodXJsKTsKICB9LAoKICByZXF1ZXN0OiBmdW5jdGlvbih1cmwpIHsKICAgIHRo aXMudXJsID0gdXJsOwogICAgdGhpcy5tZXRob2QgPSB0aGlzLm9wdGlvbnMubWV0 aG9kOwogICAgdmFyIHBhcmFtcyA9IE9iamVjdC5jbG9uZSh0aGlzLm9wdGlvbnMu cGFyYW1ldGVycyk7CgogICAgaWYgKCFbJ2dldCcsICdwb3N0J10uaW5jbHVkZSh0 aGlzLm1ldGhvZCkpIHsKICAgICAgLy8gc2ltdWxhdGUgb3RoZXIgdmVyYnMgb3Zl ciBwb3N0CiAgICAgIHBhcmFtc1snX21ldGhvZCddID0gdGhpcy5tZXRob2Q7CiAg ICAgIHRoaXMubWV0aG9kID0gJ3Bvc3QnOwogICAgfQoKICAgIHRoaXMucGFyYW1l dGVycyA9IHBhcmFtczsKCiAgICBpZiAocGFyYW1zID0gT2JqZWN0LnRvUXVlcnlT dHJpbmcocGFyYW1zKSkgewogICAgICAvLyB3aGVuIEdFVCwgYXBwZW5kIHBhcmFt ZXRlcnMgdG8gVVJMCiAgICAgIGlmICh0aGlzLm1ldGhvZCA9PSAnZ2V0JykKICAg ICAgICB0aGlzLnVybCArPSAodGhpcy51cmwuaW5jbHVkZSgnPycpID8gJyYnIDog Jz8nKSArIHBhcmFtczsKICAgICAgZWxzZSBpZiAoL0tvbnF1ZXJvcnxTYWZhcml8 S0hUTUwvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpCiAgICAgICAgcGFyYW1z ICs9ICcmXz0nOwogICAgfQoKICAgIHRyeSB7CiAgICAgIHZhciByZXNwb25zZSA9 IG5ldyBBamF4LlJlc3BvbnNlKHRoaXMpOwogICAgICBpZiAodGhpcy5vcHRpb25z Lm9uQ3JlYXRlKSB0aGlzLm9wdGlvbnMub25DcmVhdGUocmVzcG9uc2UpOwogICAg ICBBamF4LlJlc3BvbmRlcnMuZGlzcGF0Y2goJ29uQ3JlYXRlJywgdGhpcywgcmVz cG9uc2UpOwoKICAgICAgdGhpcy50cmFuc3BvcnQub3Blbih0aGlzLm1ldGhvZC50 b1VwcGVyQ2FzZSgpLCB0aGlzLnVybCwKICAgICAgICB0aGlzLm9wdGlvbnMuYXN5 bmNocm9ub3VzKTsKCiAgICAgIGlmICh0aGlzLm9wdGlvbnMuYXN5bmNocm9ub3Vz KSB0aGlzLnJlc3BvbmRUb1JlYWR5U3RhdGUuYmluZCh0aGlzKS5kZWZlcigxKTsK CiAgICAgIHRoaXMudHJhbnNwb3J0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHRoaXMu b25TdGF0ZUNoYW5nZS5iaW5kKHRoaXMpOwogICAgICB0aGlzLnNldFJlcXVlc3RI ZWFkZXJzKCk7CgogICAgICB0aGlzLmJvZHkgPSB0aGlzLm1ldGhvZCA9PSAncG9z dCcgPyAodGhpcy5vcHRpb25zLnBvc3RCb2R5IHx8IHBhcmFtcykgOiBudWxsOwog ICAgICB0aGlzLnRyYW5zcG9ydC5zZW5kKHRoaXMuYm9keSk7CgogICAgICAvKiBG b3JjZSBGaXJlZm94IHRvIGhhbmRsZSByZWFkeSBzdGF0ZSA0IGZvciBzeW5jaHJv bm91cyByZXF1ZXN0cyAqLwogICAgICBpZiAoIXRoaXMub3B0aW9ucy5hc3luY2hy b25vdXMgJiYgdGhpcy50cmFuc3BvcnQub3ZlcnJpZGVNaW1lVHlwZSkKICAgICAg ICB0aGlzLm9uU3RhdGVDaGFuZ2UoKTsKCiAgICB9CiAgICBjYXRjaCAoZSkgewog ICAgICB0aGlzLmRpc3BhdGNoRXhjZXB0aW9uKGUpOwogICAgfQogIH0sCgogIG9u U3RhdGVDaGFuZ2U6IGZ1bmN0aW9uKCkgewogICAgdmFyIHJlYWR5U3RhdGUgPSB0 aGlzLnRyYW5zcG9ydC5yZWFkeVN0YXRlOwogICAgaWYgKHJlYWR5U3RhdGUgPiAx ICYmICEoKHJlYWR5U3RhdGUgPT0gNCkgJiYgdGhpcy5fY29tcGxldGUpKQogICAg ICB0aGlzLnJlc3BvbmRUb1JlYWR5U3RhdGUodGhpcy50cmFuc3BvcnQucmVhZHlT dGF0ZSk7CiAgfSwKCiAgc2V0UmVxdWVzdEhlYWRlcnM6IGZ1bmN0aW9uKCkgewog ICAgdmFyIGhlYWRlcnMgPSB7CiAgICAgICdYLVJlcXVlc3RlZC1XaXRoJzogJ1hN TEh0dHBSZXF1ZXN0JywKICAgICAgJ1gtUHJvdG90eXBlLVZlcnNpb24nOiBQcm90 b3R5cGUuVmVyc2lvbiwKICAgICAgJ0FjY2VwdCc6ICd0ZXh0L2phdmFzY3JpcHQs IHRleHQvaHRtbCwgYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCwgKi8qJwogICAg fTsKCiAgICBpZiAodGhpcy5tZXRob2QgPT0gJ3Bvc3QnKSB7CiAgICAgIGhlYWRl cnNbJ0NvbnRlbnQtdHlwZSddID0gdGhpcy5vcHRpb25zLmNvbnRlbnRUeXBlICsK ICAgICAgICAodGhpcy5vcHRpb25zLmVuY29kaW5nID8gJzsgY2hhcnNldD0nICsg dGhpcy5vcHRpb25zLmVuY29kaW5nIDogJycpOwoKICAgICAgLyogRm9yY2UgIkNv bm5lY3Rpb246IGNsb3NlIiBmb3Igb2xkZXIgTW96aWxsYSBicm93c2VycyB0byB3 b3JrCiAgICAgICAqIGFyb3VuZCBhIGJ1ZyB3aGVyZSBYTUxIdHRwUmVxdWVzdCBz ZW5kcyBhbiBpbmNvcnJlY3QKICAgICAgICogQ29udGVudC1sZW5ndGggaGVhZGVy LiBTZWUgTW96aWxsYSBCdWd6aWxsYSAjMjQ2NjUxLgogICAgICAgKi8KICAgICAg aWYgKHRoaXMudHJhbnNwb3J0Lm92ZXJyaWRlTWltZVR5cGUgJiYKICAgICAgICAg IChuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9HZWNrb1wvKFxkezR9KS8pIHx8 IFswLDIwMDVdKVsxXSA8IDIwMDUpCiAgICAgICAgICAgIGhlYWRlcnNbJ0Nvbm5l Y3Rpb24nXSA9ICdjbG9zZSc7CiAgICB9CgogICAgLy8gdXNlci1kZWZpbmVkIGhl YWRlcnMKICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLnJlcXVlc3RIZWFkZXJz ID09ICdvYmplY3QnKSB7CiAgICAgIHZhciBleHRyYXMgPSB0aGlzLm9wdGlvbnMu cmVxdWVzdEhlYWRlcnM7CgogICAgICBpZiAoT2JqZWN0LmlzRnVuY3Rpb24oZXh0 cmFzLnB1c2gpKQogICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBleHRy YXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpICs9IDIpCiAgICAgICAgICBoZWFkZXJz W2V4dHJhc1tpXV0gPSBleHRyYXNbaSsxXTsKICAgICAgZWxzZQogICAgICAgICRI KGV4dHJhcykuZWFjaChmdW5jdGlvbihwYWlyKSB7IGhlYWRlcnNbcGFpci5rZXld ID0gcGFpci52YWx1ZSB9KTsKICAgIH0KCiAgICBmb3IgKHZhciBuYW1lIGluIGhl YWRlcnMpCiAgICAgIHRoaXMudHJhbnNwb3J0LnNldFJlcXVlc3RIZWFkZXIobmFt ZSwgaGVhZGVyc1tuYW1lXSk7CiAgfSwKCiAgc3VjY2VzczogZnVuY3Rpb24oKSB7 CiAgICB2YXIgc3RhdHVzID0gdGhpcy5nZXRTdGF0dXMoKTsKICAgIHJldHVybiAh c3RhdHVzIHx8IChzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMCk7CiAgfSwK CiAgZ2V0U3RhdHVzOiBmdW5jdGlvbigpIHsKICAgIHRyeSB7CiAgICAgIHJldHVy biB0aGlzLnRyYW5zcG9ydC5zdGF0dXMgfHwgMDsKICAgIH0gY2F0Y2ggKGUpIHsg cmV0dXJuIDAgfQogIH0sCgogIHJlc3BvbmRUb1JlYWR5U3RhdGU6IGZ1bmN0aW9u KHJlYWR5U3RhdGUpIHsKICAgIHZhciBzdGF0ZSA9IEFqYXguUmVxdWVzdC5FdmVu dHNbcmVhZHlTdGF0ZV0sIHJlc3BvbnNlID0gbmV3IEFqYXguUmVzcG9uc2UodGhp cyk7CgogICAgaWYgKHN0YXRlID09ICdDb21wbGV0ZScpIHsKICAgICAgdHJ5IHsK ICAgICAgICB0aGlzLl9jb21wbGV0ZSA9IHRydWU7CiAgICAgICAgKHRoaXMub3B0 aW9uc1snb24nICsgcmVzcG9uc2Uuc3RhdHVzXQogICAgICAgICB8fCB0aGlzLm9w dGlvbnNbJ29uJyArICh0aGlzLnN1Y2Nlc3MoKSA/ICdTdWNjZXNzJyA6ICdGYWls dXJlJyldCiAgICAgICAgIHx8IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uKShyZXNw b25zZSwgcmVzcG9uc2UuaGVhZGVySlNPTik7CiAgICAgIH0gY2F0Y2ggKGUpIHsK ICAgICAgICB0aGlzLmRpc3BhdGNoRXhjZXB0aW9uKGUpOwogICAgICB9CgogICAg ICB2YXIgY29udGVudFR5cGUgPSByZXNwb25zZS5nZXRIZWFkZXIoJ0NvbnRlbnQt dHlwZScpOwogICAgICBpZiAodGhpcy5vcHRpb25zLmV2YWxKUyA9PSAnZm9yY2Un CiAgICAgICAgICB8fCAodGhpcy5vcHRpb25zLmV2YWxKUyAmJiB0aGlzLmlzU2Ft ZU9yaWdpbigpICYmIGNvbnRlbnRUeXBlCiAgICAgICAgICAmJiBjb250ZW50VHlw ZS5tYXRjaCgvXlxzKih0ZXh0fGFwcGxpY2F0aW9uKVwvKHgtKT8oamF2YXxlY21h KXNjcmlwdCg7LiopP1xzKiQvaSkpKQogICAgICAgIHRoaXMuZXZhbFJlc3BvbnNl KCk7CiAgICB9CgogICAgdHJ5IHsKICAgICAgKHRoaXMub3B0aW9uc1snb24nICsg c3RhdGVdIHx8IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uKShyZXNwb25zZSwgcmVz cG9uc2UuaGVhZGVySlNPTik7CiAgICAgIEFqYXguUmVzcG9uZGVycy5kaXNwYXRj aCgnb24nICsgc3RhdGUsIHRoaXMsIHJlc3BvbnNlLCByZXNwb25zZS5oZWFkZXJK U09OKTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgdGhpcy5kaXNwYXRjaEV4Y2Vw dGlvbihlKTsKICAgIH0KCiAgICBpZiAoc3RhdGUgPT0gJ0NvbXBsZXRlJykgewog ICAgICAvLyBhdm9pZCBtZW1vcnkgbGVhayBpbiBNU0lFOiBjbGVhbiB1cAogICAg ICB0aGlzLnRyYW5zcG9ydC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBQcm90b3R5cGUu ZW1wdHlGdW5jdGlvbjsKICAgIH0KICB9LAoKICBpc1NhbWVPcmlnaW46IGZ1bmN0 aW9uKCkgewogICAgdmFyIG0gPSB0aGlzLnVybC5tYXRjaCgvXlxzKmh0dHBzPzpc L1wvW15cL10qLyk7CiAgICByZXR1cm4gIW0gfHwgKG1bMF0gPT0gJyN7cHJvdG9j b2x9Ly8je2RvbWFpbn0je3BvcnR9Jy5pbnRlcnBvbGF0ZSh7CiAgICAgIHByb3Rv Y29sOiBsb2NhdGlvbi5wcm90b2NvbCwKICAgICAgZG9tYWluOiBkb2N1bWVudC5k b21haW4sCiAgICAgIHBvcnQ6IGxvY2F0aW9uLnBvcnQgPyAnOicgKyBsb2NhdGlv bi5wb3J0IDogJycKICAgIH0pKTsKICB9LAoKICBnZXRIZWFkZXI6IGZ1bmN0aW9u KG5hbWUpIHsKICAgIHRyeSB7CiAgICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydC5n ZXRSZXNwb25zZUhlYWRlcihuYW1lKSB8fCBudWxsOwogICAgfSBjYXRjaCAoZSkg eyByZXR1cm4gbnVsbCB9CiAgfSwKCiAgZXZhbFJlc3BvbnNlOiBmdW5jdGlvbigp IHsKICAgIHRyeSB7CiAgICAgIHJldHVybiBldmFsKCh0aGlzLnRyYW5zcG9ydC5y ZXNwb25zZVRleHQgfHwgJycpLnVuZmlsdGVySlNPTigpKTsKICAgIH0gY2F0Y2gg KGUpIHsKICAgICAgdGhpcy5kaXNwYXRjaEV4Y2VwdGlvbihlKTsKICAgIH0KICB9 LAoKICBkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24oZXhjZXB0aW9uKSB7CiAg ICAodGhpcy5vcHRpb25zLm9uRXhjZXB0aW9uIHx8IFByb3RvdHlwZS5lbXB0eUZ1 bmN0aW9uKSh0aGlzLCBleGNlcHRpb24pOwogICAgQWpheC5SZXNwb25kZXJzLmRp c3BhdGNoKCdvbkV4Y2VwdGlvbicsIHRoaXMsIGV4Y2VwdGlvbik7CiAgfQp9KTsK CkFqYXguUmVxdWVzdC5FdmVudHMgPQogIFsnVW5pbml0aWFsaXplZCcsICdMb2Fk aW5nJywgJ0xvYWRlZCcsICdJbnRlcmFjdGl2ZScsICdDb21wbGV0ZSddOwoKQWph eC5SZXNwb25zZSA9IENsYXNzLmNyZWF0ZSh7CiAgaW5pdGlhbGl6ZTogZnVuY3Rp b24ocmVxdWVzdCl7CiAgICB0aGlzLnJlcXVlc3QgPSByZXF1ZXN0OwogICAgdmFy IHRyYW5zcG9ydCAgPSB0aGlzLnRyYW5zcG9ydCAgPSByZXF1ZXN0LnRyYW5zcG9y dCwKICAgICAgICByZWFkeVN0YXRlID0gdGhpcy5yZWFkeVN0YXRlID0gdHJhbnNw b3J0LnJlYWR5U3RhdGU7CgogICAgaWYoKHJlYWR5U3RhdGUgPiAyICYmICFQcm90 b3R5cGUuQnJvd3Nlci5JRSkgfHwgcmVhZHlTdGF0ZSA9PSA0KSB7CiAgICAgIHRo aXMuc3RhdHVzICAgICAgID0gdGhpcy5nZXRTdGF0dXMoKTsKICAgICAgdGhpcy5z dGF0dXNUZXh0ICAgPSB0aGlzLmdldFN0YXR1c1RleHQoKTsKICAgICAgdGhpcy5y ZXNwb25zZVRleHQgPSBTdHJpbmcuaW50ZXJwcmV0KHRyYW5zcG9ydC5yZXNwb25z ZVRleHQpOwogICAgICB0aGlzLmhlYWRlckpTT04gICA9IHRoaXMuX2dldEhlYWRl ckpTT04oKTsKICAgIH0KCiAgICBpZihyZWFkeVN0YXRlID09IDQpIHsKICAgICAg dmFyIHhtbCA9IHRyYW5zcG9ydC5yZXNwb25zZVhNTDsKICAgICAgdGhpcy5yZXNw b25zZVhNTCAgPSBPYmplY3QuaXNVbmRlZmluZWQoeG1sKSA/IG51bGwgOiB4bWw7 CiAgICAgIHRoaXMucmVzcG9uc2VKU09OID0gdGhpcy5fZ2V0UmVzcG9uc2VKU09O KCk7CiAgICB9CiAgfSwKCiAgc3RhdHVzOiAgICAgIDAsCiAgc3RhdHVzVGV4dDog JycsCgogIGdldFN0YXR1czogQWpheC5SZXF1ZXN0LnByb3RvdHlwZS5nZXRTdGF0 dXMsCgogIGdldFN0YXR1c1RleHQ6IGZ1bmN0aW9uKCkgewogICAgdHJ5IHsKICAg ICAgcmV0dXJuIHRoaXMudHJhbnNwb3J0LnN0YXR1c1RleHQgfHwgJyc7CiAgICB9 IGNhdGNoIChlKSB7IHJldHVybiAnJyB9CiAgfSwKCiAgZ2V0SGVhZGVyOiBBamF4 LlJlcXVlc3QucHJvdG90eXBlLmdldEhlYWRlciwKCiAgZ2V0QWxsSGVhZGVyczog ZnVuY3Rpb24oKSB7CiAgICB0cnkgewogICAgICByZXR1cm4gdGhpcy5nZXRBbGxS ZXNwb25zZUhlYWRlcnMoKTsKICAgIH0gY2F0Y2ggKGUpIHsgcmV0dXJuIG51bGwg fQogIH0sCgogIGdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbihuYW1lKSB7CiAg ICByZXR1cm4gdGhpcy50cmFuc3BvcnQuZ2V0UmVzcG9uc2VIZWFkZXIobmFtZSk7 CiAgfSwKCiAgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOiBmdW5jdGlvbigpIHsKICAg IHJldHVybiB0aGlzLnRyYW5zcG9ydC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKTsK ICB9LAoKICBfZ2V0SGVhZGVySlNPTjogZnVuY3Rpb24oKSB7CiAgICB2YXIganNv biA9IHRoaXMuZ2V0SGVhZGVyKCdYLUpTT04nKTsKICAgIGlmICghanNvbikgcmV0 dXJuIG51bGw7CiAgICBqc29uID0gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShq c29uKSk7CiAgICB0cnkgewogICAgICByZXR1cm4ganNvbi5ldmFsSlNPTih0aGlz LnJlcXVlc3Qub3B0aW9ucy5zYW5pdGl6ZUpTT04gfHwKICAgICAgICAhdGhpcy5y ZXF1ZXN0LmlzU2FtZU9yaWdpbigpKTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAg dGhpcy5yZXF1ZXN0LmRpc3BhdGNoRXhjZXB0aW9uKGUpOwogICAgfQogIH0sCgog IF9nZXRSZXNwb25zZUpTT046IGZ1bmN0aW9uKCkgewogICAgdmFyIG9wdGlvbnMg PSB0aGlzLnJlcXVlc3Qub3B0aW9uczsKICAgIGlmICghb3B0aW9ucy5ldmFsSlNP TiB8fCAob3B0aW9ucy5ldmFsSlNPTiAhPSAnZm9yY2UnICYmCiAgICAgICEodGhp cy5nZXRIZWFkZXIoJ0NvbnRlbnQtdHlwZScpIHx8ICcnKS5pbmNsdWRlKCdhcHBs aWNhdGlvbi9qc29uJykpIHx8CiAgICAgICAgdGhpcy5yZXNwb25zZVRleHQuYmxh bmsoKSkKICAgICAgICAgIHJldHVybiBudWxsOwogICAgdHJ5IHsKICAgICAgcmV0 dXJuIHRoaXMucmVzcG9uc2VUZXh0LmV2YWxKU09OKG9wdGlvbnMuc2FuaXRpemVK U09OIHx8CiAgICAgICAgIXRoaXMucmVxdWVzdC5pc1NhbWVPcmlnaW4oKSk7CiAg ICB9IGNhdGNoIChlKSB7CiAgICAgIHRoaXMucmVxdWVzdC5kaXNwYXRjaEV4Y2Vw dGlvbihlKTsKICAgIH0KICB9Cn0pOwoKQWpheC5VcGRhdGVyID0gQ2xhc3MuY3Jl YXRlKEFqYXguUmVxdWVzdCwgewogIGluaXRpYWxpemU6IGZ1bmN0aW9uKCRzdXBl ciwgY29udGFpbmVyLCB1cmwsIG9wdGlvbnMpIHsKICAgIHRoaXMuY29udGFpbmVy ID0gewogICAgICBzdWNjZXNzOiAoY29udGFpbmVyLnN1Y2Nlc3MgfHwgY29udGFp bmVyKSwKICAgICAgZmFpbHVyZTogKGNvbnRhaW5lci5mYWlsdXJlIHx8IChjb250 YWluZXIuc3VjY2VzcyA/IG51bGwgOiBjb250YWluZXIpKQogICAgfTsKCiAgICBv cHRpb25zID0gT2JqZWN0LmNsb25lKG9wdGlvbnMpOwogICAgdmFyIG9uQ29tcGxl dGUgPSBvcHRpb25zLm9uQ29tcGxldGU7CiAgICBvcHRpb25zLm9uQ29tcGxldGUg PSAoZnVuY3Rpb24ocmVzcG9uc2UsIGpzb24pIHsKICAgICAgdGhpcy51cGRhdGVD b250ZW50KHJlc3BvbnNlLnJlc3BvbnNlVGV4dCk7CiAgICAgIGlmIChPYmplY3Qu aXNGdW5jdGlvbihvbkNvbXBsZXRlKSkgb25Db21wbGV0ZShyZXNwb25zZSwganNv bik7CiAgICB9KS5iaW5kKHRoaXMpOwoKICAgICRzdXBlcih1cmwsIG9wdGlvbnMp OwogIH0sCgogIHVwZGF0ZUNvbnRlbnQ6IGZ1bmN0aW9uKHJlc3BvbnNlVGV4dCkg ewogICAgdmFyIHJlY2VpdmVyID0gdGhpcy5jb250YWluZXJbdGhpcy5zdWNjZXNz KCkgPyAnc3VjY2VzcycgOiAnZmFpbHVyZSddLAogICAgICAgIG9wdGlvbnMgPSB0 aGlzLm9wdGlvbnM7CgogICAgaWYgKCFvcHRpb25zLmV2YWxTY3JpcHRzKSByZXNw b25zZVRleHQgPSByZXNwb25zZVRleHQuc3RyaXBTY3JpcHRzKCk7CgogICAgaWYg KHJlY2VpdmVyID0gJChyZWNlaXZlcikpIHsKICAgICAgaWYgKG9wdGlvbnMuaW5z ZXJ0aW9uKSB7CiAgICAgICAgaWYgKE9iamVjdC5pc1N0cmluZyhvcHRpb25zLmlu c2VydGlvbikpIHsKICAgICAgICAgIHZhciBpbnNlcnRpb24gPSB7IH07IGluc2Vy dGlvbltvcHRpb25zLmluc2VydGlvbl0gPSByZXNwb25zZVRleHQ7CiAgICAgICAg ICByZWNlaXZlci5pbnNlcnQoaW5zZXJ0aW9uKTsKICAgICAgICB9CiAgICAgICAg ZWxzZSBvcHRpb25zLmluc2VydGlvbihyZWNlaXZlciwgcmVzcG9uc2VUZXh0KTsK ICAgICAgfQogICAgICBlbHNlIHJlY2VpdmVyLnVwZGF0ZShyZXNwb25zZVRleHQp OwogICAgfQogIH0KfSk7CgpBamF4LlBlcmlvZGljYWxVcGRhdGVyID0gQ2xhc3Mu Y3JlYXRlKEFqYXguQmFzZSwgewogIGluaXRpYWxpemU6IGZ1bmN0aW9uKCRzdXBl ciwgY29udGFpbmVyLCB1cmwsIG9wdGlvbnMpIHsKICAgICRzdXBlcihvcHRpb25z KTsKICAgIHRoaXMub25Db21wbGV0ZSA9IHRoaXMub3B0aW9ucy5vbkNvbXBsZXRl OwoKICAgIHRoaXMuZnJlcXVlbmN5ID0gKHRoaXMub3B0aW9ucy5mcmVxdWVuY3kg fHwgMik7CiAgICB0aGlzLmRlY2F5ID0gKHRoaXMub3B0aW9ucy5kZWNheSB8fCAx KTsKCiAgICB0aGlzLnVwZGF0ZXIgPSB7IH07CiAgICB0aGlzLmNvbnRhaW5lciA9 IGNvbnRhaW5lcjsKICAgIHRoaXMudXJsID0gdXJsOwoKICAgIHRoaXMuc3RhcnQo KTsKICB9LAoKICBzdGFydDogZnVuY3Rpb24oKSB7CiAgICB0aGlzLm9wdGlvbnMu b25Db21wbGV0ZSA9IHRoaXMudXBkYXRlQ29tcGxldGUuYmluZCh0aGlzKTsKICAg IHRoaXMub25UaW1lckV2ZW50KCk7CiAgfSwKCiAgc3RvcDogZnVuY3Rpb24oKSB7 CiAgICB0aGlzLnVwZGF0ZXIub3B0aW9ucy5vbkNvbXBsZXRlID0gdW5kZWZpbmVk OwogICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpOwogICAgKHRoaXMub25Db21w bGV0ZSB8fCBQcm90b3R5cGUuZW1wdHlGdW5jdGlvbikuYXBwbHkodGhpcywgYXJn dW1lbnRzKTsKICB9LAoKICB1cGRhdGVDb21wbGV0ZTogZnVuY3Rpb24ocmVzcG9u c2UpIHsKICAgIGlmICh0aGlzLm9wdGlvbnMuZGVjYXkpIHsKICAgICAgdGhpcy5k ZWNheSA9IChyZXNwb25zZS5yZXNwb25zZVRleHQgPT0gdGhpcy5sYXN0VGV4dCA/ CiAgICAgICAgdGhpcy5kZWNheSAqIHRoaXMub3B0aW9ucy5kZWNheSA6IDEpOwoK ICAgICAgdGhpcy5sYXN0VGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlVGV4dDsKICAg IH0KICAgIHRoaXMudGltZXIgPSB0aGlzLm9uVGltZXJFdmVudC5iaW5kKHRoaXMp LmRlbGF5KHRoaXMuZGVjYXkgKiB0aGlzLmZyZXF1ZW5jeSk7CiAgfSwKCiAgb25U aW1lckV2ZW50OiBmdW5jdGlvbigpIHsKICAgIHRoaXMudXBkYXRlciA9IG5ldyBB amF4LlVwZGF0ZXIodGhpcy5jb250YWluZXIsIHRoaXMudXJsLCB0aGlzLm9wdGlv bnMpOwogIH0KfSk7CmZ1bmN0aW9uICQoZWxlbWVudCkgewogIGlmIChhcmd1bWVu dHMubGVuZ3RoID4gMSkgewogICAgZm9yICh2YXIgaSA9IDAsIGVsZW1lbnRzID0g W10sIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykK ICAgICAgZWxlbWVudHMucHVzaCgkKGFyZ3VtZW50c1tpXSkpOwogICAgcmV0dXJu IGVsZW1lbnRzOwogIH0KICBpZiAoT2JqZWN0LmlzU3RyaW5nKGVsZW1lbnQpKQog ICAgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnQpOwog IHJldHVybiBFbGVtZW50LmV4dGVuZChlbGVtZW50KTsKfQoKaWYgKFByb3RvdHlw ZS5Ccm93c2VyRmVhdHVyZXMuWFBhdGgpIHsKICBkb2N1bWVudC5fZ2V0RWxlbWVu dHNCeVhQYXRoID0gZnVuY3Rpb24oZXhwcmVzc2lvbiwgcGFyZW50RWxlbWVudCkg ewogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIHZhciBxdWVyeSA9IGRvY3VtZW50 LmV2YWx1YXRlKGV4cHJlc3Npb24sICQocGFyZW50RWxlbWVudCkgfHwgZG9jdW1l bnQsCiAgICAgIG51bGwsIFhQYXRoUmVzdWx0Lk9SREVSRURfTk9ERV9TTkFQU0hP VF9UWVBFLCBudWxsKTsKICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBxdWVy eS5zbmFwc2hvdExlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKQogICAgICByZXN1bHRz LnB1c2goRWxlbWVudC5leHRlbmQocXVlcnkuc25hcHNob3RJdGVtKGkpKSk7CiAg ICByZXR1cm4gcmVzdWx0czsKICB9Owp9CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKi8KCmlmICghd2luZG93Lk5vZGUpIHZhciBOb2RlID0geyB9OwoKaWYg KCFOb2RlLkVMRU1FTlRfTk9ERSkgewogIC8vIERPTSBsZXZlbCAyIEVDTUFTY3Jp cHQgTGFuZ3VhZ2UgQmluZGluZwogIE9iamVjdC5leHRlbmQoTm9kZSwgewogICAg RUxFTUVOVF9OT0RFOiAxLAogICAgQVRUUklCVVRFX05PREU6IDIsCiAgICBURVhU X05PREU6IDMsCiAgICBDREFUQV9TRUNUSU9OX05PREU6IDQsCiAgICBFTlRJVFlf UkVGRVJFTkNFX05PREU6IDUsCiAgICBFTlRJVFlfTk9ERTogNiwKICAgIFBST0NF U1NJTkdfSU5TVFJVQ1RJT05fTk9ERTogNywKICAgIENPTU1FTlRfTk9ERTogOCwK ICAgIERPQ1VNRU5UX05PREU6IDksCiAgICBET0NVTUVOVF9UWVBFX05PREU6IDEw LAogICAgRE9DVU1FTlRfRlJBR01FTlRfTk9ERTogMTEsCiAgICBOT1RBVElPTl9O T0RFOiAxMgogIH0pOwp9CgooZnVuY3Rpb24oKSB7CiAgdmFyIGVsZW1lbnQgPSB0 aGlzLkVsZW1lbnQ7CiAgdGhpcy5FbGVtZW50ID0gZnVuY3Rpb24odGFnTmFtZSwg YXR0cmlidXRlcykgewogICAgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMgfHwgeyB9 OwogICAgdGFnTmFtZSA9IHRhZ05hbWUudG9Mb3dlckNhc2UoKTsKICAgIHZhciBj YWNoZSA9IEVsZW1lbnQuY2FjaGU7CiAgICBpZiAoUHJvdG90eXBlLkJyb3dzZXIu SUUgJiYgYXR0cmlidXRlcy5uYW1lKSB7CiAgICAgIHRhZ05hbWUgPSAnPCcgKyB0 YWdOYW1lICsgJyBuYW1lPSInICsgYXR0cmlidXRlcy5uYW1lICsgJyI+JzsKICAg ICAgZGVsZXRlIGF0dHJpYnV0ZXMubmFtZTsKICAgICAgcmV0dXJuIEVsZW1lbnQu d3JpdGVBdHRyaWJ1dGUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKSwg YXR0cmlidXRlcyk7CiAgICB9CiAgICBpZiAoIWNhY2hlW3RhZ05hbWVdKSBjYWNo ZVt0YWdOYW1lXSA9IEVsZW1lbnQuZXh0ZW5kKGRvY3VtZW50LmNyZWF0ZUVsZW1l bnQodGFnTmFtZSkpOwogICAgcmV0dXJuIEVsZW1lbnQud3JpdGVBdHRyaWJ1dGUo Y2FjaGVbdGFnTmFtZV0uY2xvbmVOb2RlKGZhbHNlKSwgYXR0cmlidXRlcyk7CiAg fTsKICBPYmplY3QuZXh0ZW5kKHRoaXMuRWxlbWVudCwgZWxlbWVudCB8fCB7IH0p OwogIGlmIChlbGVtZW50KSB0aGlzLkVsZW1lbnQucHJvdG90eXBlID0gZWxlbWVu dC5wcm90b3R5cGU7Cn0pLmNhbGwod2luZG93KTsKCkVsZW1lbnQuY2FjaGUgPSB7 IH07CgpFbGVtZW50Lk1ldGhvZHMgPSB7CiAgdmlzaWJsZTogZnVuY3Rpb24oZWxl bWVudCkgewogICAgcmV0dXJuICQoZWxlbWVudCkuc3R5bGUuZGlzcGxheSAhPSAn bm9uZSc7CiAgfSwKCiAgdG9nZ2xlOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBl bGVtZW50ID0gJChlbGVtZW50KTsKICAgIEVsZW1lbnRbRWxlbWVudC52aXNpYmxl KGVsZW1lbnQpID8gJ2hpZGUnIDogJ3Nob3cnXShlbGVtZW50KTsKICAgIHJldHVy biBlbGVtZW50OwogIH0sCgogIGhpZGU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAg IGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5 ID0gJ25vbmUnOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgc2hvdzogZnVu Y3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBl bGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgIHJldHVybiBlbGVtZW50Owog IH0sCgogIHJlbW92ZTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9 ICQoZWxlbWVudCk7CiAgICBlbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo ZWxlbWVudCk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICB1cGRhdGU6IGZ1 bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1l bnQpOwogICAgaWYgKGNvbnRlbnQgJiYgY29udGVudC50b0VsZW1lbnQpIGNvbnRl bnQgPSBjb250ZW50LnRvRWxlbWVudCgpOwogICAgaWYgKE9iamVjdC5pc0VsZW1l bnQoY29udGVudCkpIHJldHVybiBlbGVtZW50LnVwZGF0ZSgpLmluc2VydChjb250 ZW50KTsKICAgIGNvbnRlbnQgPSBPYmplY3QudG9IVE1MKGNvbnRlbnQpOwogICAg ZWxlbWVudC5pbm5lckhUTUwgPSBjb250ZW50LnN0cmlwU2NyaXB0cygpOwogICAg Y29udGVudC5ldmFsU2NyaXB0cy5iaW5kKGNvbnRlbnQpLmRlZmVyKCk7CiAgICBy ZXR1cm4gZWxlbWVudDsKICB9LAoKICByZXBsYWNlOiBmdW5jdGlvbihlbGVtZW50 LCBjb250ZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmIChj b250ZW50ICYmIGNvbnRlbnQudG9FbGVtZW50KSBjb250ZW50ID0gY29udGVudC50 b0VsZW1lbnQoKTsKICAgIGVsc2UgaWYgKCFPYmplY3QuaXNFbGVtZW50KGNvbnRl bnQpKSB7CiAgICAgIGNvbnRlbnQgPSBPYmplY3QudG9IVE1MKGNvbnRlbnQpOwog ICAgICB2YXIgcmFuZ2UgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuY3JlYXRlUmFu Z2UoKTsKICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZShlbGVtZW50KTsKICAgICAgY29u dGVudC5ldmFsU2NyaXB0cy5iaW5kKGNvbnRlbnQpLmRlZmVyKCk7CiAgICAgIGNv bnRlbnQgPSByYW5nZS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoY29udGVudC5z dHJpcFNjcmlwdHMoKSk7CiAgICB9CiAgICBlbGVtZW50LnBhcmVudE5vZGUucmVw bGFjZUNoaWxkKGNvbnRlbnQsIGVsZW1lbnQpOwogICAgcmV0dXJuIGVsZW1lbnQ7 CiAgfSwKCiAgaW5zZXJ0OiBmdW5jdGlvbihlbGVtZW50LCBpbnNlcnRpb25zKSB7 CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKCiAgICBpZiAoT2JqZWN0LmlzU3Ry aW5nKGluc2VydGlvbnMpIHx8IE9iamVjdC5pc051bWJlcihpbnNlcnRpb25zKSB8 fAogICAgICAgIE9iamVjdC5pc0VsZW1lbnQoaW5zZXJ0aW9ucykgfHwgKGluc2Vy dGlvbnMgJiYgKGluc2VydGlvbnMudG9FbGVtZW50IHx8IGluc2VydGlvbnMudG9I VE1MKSkpCiAgICAgICAgICBpbnNlcnRpb25zID0ge2JvdHRvbTppbnNlcnRpb25z fTsKCiAgICB2YXIgY29udGVudCwgaW5zZXJ0LCB0YWdOYW1lLCBjaGlsZE5vZGVz OwoKICAgIGZvciAodmFyIHBvc2l0aW9uIGluIGluc2VydGlvbnMpIHsKICAgICAg Y29udGVudCAgPSBpbnNlcnRpb25zW3Bvc2l0aW9uXTsKICAgICAgcG9zaXRpb24g PSBwb3NpdGlvbi50b0xvd2VyQ2FzZSgpOwogICAgICBpbnNlcnQgPSBFbGVtZW50 Ll9pbnNlcnRpb25UcmFuc2xhdGlvbnNbcG9zaXRpb25dOwoKICAgICAgaWYgKGNv bnRlbnQgJiYgY29udGVudC50b0VsZW1lbnQpIGNvbnRlbnQgPSBjb250ZW50LnRv RWxlbWVudCgpOwogICAgICBpZiAoT2JqZWN0LmlzRWxlbWVudChjb250ZW50KSkg ewogICAgICAgIGluc2VydChlbGVtZW50LCBjb250ZW50KTsKICAgICAgICBjb250 aW51ZTsKICAgICAgfQoKICAgICAgY29udGVudCA9IE9iamVjdC50b0hUTUwoY29u dGVudCk7CgogICAgICB0YWdOYW1lID0gKChwb3NpdGlvbiA9PSAnYmVmb3JlJyB8 fCBwb3NpdGlvbiA9PSAnYWZ0ZXInKQogICAgICAgID8gZWxlbWVudC5wYXJlbnRO b2RlIDogZWxlbWVudCkudGFnTmFtZS50b1VwcGVyQ2FzZSgpOwoKICAgICAgY2hp bGROb2RlcyA9IEVsZW1lbnQuX2dldENvbnRlbnRGcm9tQW5vbnltb3VzRWxlbWVu dCh0YWdOYW1lLCBjb250ZW50LnN0cmlwU2NyaXB0cygpKTsKCiAgICAgIGlmIChw b3NpdGlvbiA9PSAndG9wJyB8fCBwb3NpdGlvbiA9PSAnYWZ0ZXInKSBjaGlsZE5v ZGVzLnJldmVyc2UoKTsKICAgICAgY2hpbGROb2Rlcy5lYWNoKGluc2VydC5jdXJy eShlbGVtZW50KSk7CgogICAgICBjb250ZW50LmV2YWxTY3JpcHRzLmJpbmQoY29u dGVudCkuZGVmZXIoKTsKICAgIH0KCiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoK ICB3cmFwOiBmdW5jdGlvbihlbGVtZW50LCB3cmFwcGVyLCBhdHRyaWJ1dGVzKSB7 CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmIChPYmplY3QuaXNFbGVt ZW50KHdyYXBwZXIpKQogICAgICAkKHdyYXBwZXIpLndyaXRlQXR0cmlidXRlKGF0 dHJpYnV0ZXMgfHwgeyB9KTsKICAgIGVsc2UgaWYgKE9iamVjdC5pc1N0cmluZyh3 cmFwcGVyKSkgd3JhcHBlciA9IG5ldyBFbGVtZW50KHdyYXBwZXIsIGF0dHJpYnV0 ZXMpOwogICAgZWxzZSB3cmFwcGVyID0gbmV3IEVsZW1lbnQoJ2RpdicsIHdyYXBw ZXIpOwogICAgaWYgKGVsZW1lbnQucGFyZW50Tm9kZSkKICAgICAgZWxlbWVudC5w YXJlbnROb2RlLnJlcGxhY2VDaGlsZCh3cmFwcGVyLCBlbGVtZW50KTsKICAgIHdy YXBwZXIuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CiAgICByZXR1cm4gd3JhcHBlcjsK ICB9LAoKICBpbnNwZWN0OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50 ID0gJChlbGVtZW50KTsKICAgIHZhciByZXN1bHQgPSAnPCcgKyBlbGVtZW50LnRh Z05hbWUudG9Mb3dlckNhc2UoKTsKICAgICRIKHsnaWQnOiAnaWQnLCAnY2xhc3NO YW1lJzogJ2NsYXNzJ30pLmVhY2goZnVuY3Rpb24ocGFpcikgewogICAgICB2YXIg cHJvcGVydHkgPSBwYWlyLmZpcnN0KCksIGF0dHJpYnV0ZSA9IHBhaXIubGFzdCgp OwogICAgICB2YXIgdmFsdWUgPSAoZWxlbWVudFtwcm9wZXJ0eV0gfHwgJycpLnRv U3RyaW5nKCk7CiAgICAgIGlmICh2YWx1ZSkgcmVzdWx0ICs9ICcgJyArIGF0dHJp YnV0ZSArICc9JyArIHZhbHVlLmluc3BlY3QodHJ1ZSk7CiAgICB9KTsKICAgIHJl dHVybiByZXN1bHQgKyAnPic7CiAgfSwKCiAgcmVjdXJzaXZlbHlDb2xsZWN0OiBm dW5jdGlvbihlbGVtZW50LCBwcm9wZXJ0eSkgewogICAgZWxlbWVudCA9ICQoZWxl bWVudCk7CiAgICB2YXIgZWxlbWVudHMgPSBbXTsKICAgIHdoaWxlIChlbGVtZW50 ID0gZWxlbWVudFtwcm9wZXJ0eV0pCiAgICAgIGlmIChlbGVtZW50Lm5vZGVUeXBl ID09IDEpCiAgICAgICAgZWxlbWVudHMucHVzaChFbGVtZW50LmV4dGVuZChlbGVt ZW50KSk7CiAgICByZXR1cm4gZWxlbWVudHM7CiAgfSwKCiAgYW5jZXN0b3JzOiBm dW5jdGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4gJChlbGVtZW50KS5yZWN1cnNp dmVseUNvbGxlY3QoJ3BhcmVudE5vZGUnKTsKICB9LAoKICBkZXNjZW5kYW50czog ZnVuY3Rpb24oZWxlbWVudCkgewogICAgcmV0dXJuICQoZWxlbWVudCkuc2VsZWN0 KCIqIik7CiAgfSwKCiAgZmlyc3REZXNjZW5kYW50OiBmdW5jdGlvbihlbGVtZW50 KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KS5maXJzdENoaWxkOwogICAgd2hp bGUgKGVsZW1lbnQgJiYgZWxlbWVudC5ub2RlVHlwZSAhPSAxKSBlbGVtZW50ID0g ZWxlbWVudC5uZXh0U2libGluZzsKICAgIHJldHVybiAkKGVsZW1lbnQpOwogIH0s CgogIGltbWVkaWF0ZURlc2NlbmRhbnRzOiBmdW5jdGlvbihlbGVtZW50KSB7CiAg ICBpZiAoIShlbGVtZW50ID0gJChlbGVtZW50KS5maXJzdENoaWxkKSkgcmV0dXJu IFtdOwogICAgd2hpbGUgKGVsZW1lbnQgJiYgZWxlbWVudC5ub2RlVHlwZSAhPSAx KSBlbGVtZW50ID0gZWxlbWVudC5uZXh0U2libGluZzsKICAgIGlmIChlbGVtZW50 KSByZXR1cm4gW2VsZW1lbnRdLmNvbmNhdCgkKGVsZW1lbnQpLm5leHRTaWJsaW5n cygpKTsKICAgIHJldHVybiBbXTsKICB9LAoKICBwcmV2aW91c1NpYmxpbmdzOiBm dW5jdGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4gJChlbGVtZW50KS5yZWN1cnNp dmVseUNvbGxlY3QoJ3ByZXZpb3VzU2libGluZycpOwogIH0sCgogIG5leHRTaWJs aW5nczogZnVuY3Rpb24oZWxlbWVudCkgewogICAgcmV0dXJuICQoZWxlbWVudCku cmVjdXJzaXZlbHlDb2xsZWN0KCduZXh0U2libGluZycpOwogIH0sCgogIHNpYmxp bmdzOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50 KTsKICAgIHJldHVybiBlbGVtZW50LnByZXZpb3VzU2libGluZ3MoKS5yZXZlcnNl KCkuY29uY2F0KGVsZW1lbnQubmV4dFNpYmxpbmdzKCkpOwogIH0sCgogIG1hdGNo OiBmdW5jdGlvbihlbGVtZW50LCBzZWxlY3RvcikgewogICAgaWYgKE9iamVjdC5p c1N0cmluZyhzZWxlY3RvcikpCiAgICAgIHNlbGVjdG9yID0gbmV3IFNlbGVjdG9y KHNlbGVjdG9yKTsKICAgIHJldHVybiBzZWxlY3Rvci5tYXRjaCgkKGVsZW1lbnQp KTsKICB9LAoKICB1cDogZnVuY3Rpb24oZWxlbWVudCwgZXhwcmVzc2lvbiwgaW5k ZXgpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKGFyZ3VtZW50 cy5sZW5ndGggPT0gMSkgcmV0dXJuICQoZWxlbWVudC5wYXJlbnROb2RlKTsKICAg IHZhciBhbmNlc3RvcnMgPSBlbGVtZW50LmFuY2VzdG9ycygpOwogICAgcmV0dXJu IE9iamVjdC5pc051bWJlcihleHByZXNzaW9uKSA/IGFuY2VzdG9yc1tleHByZXNz aW9uXSA6CiAgICAgIFNlbGVjdG9yLmZpbmRFbGVtZW50KGFuY2VzdG9ycywgZXhw cmVzc2lvbiwgaW5kZXgpOwogIH0sCgogIGRvd246IGZ1bmN0aW9uKGVsZW1lbnQs IGV4cHJlc3Npb24sIGluZGV4KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsK ICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHJldHVybiBlbGVtZW50LmZp cnN0RGVzY2VuZGFudCgpOwogICAgcmV0dXJuIE9iamVjdC5pc051bWJlcihleHBy ZXNzaW9uKSA/IGVsZW1lbnQuZGVzY2VuZGFudHMoKVtleHByZXNzaW9uXSA6CiAg ICAgIEVsZW1lbnQuc2VsZWN0KGVsZW1lbnQsIGV4cHJlc3Npb24pW2luZGV4IHx8 IDBdOwogIH0sCgogIHByZXZpb3VzOiBmdW5jdGlvbihlbGVtZW50LCBleHByZXNz aW9uLCBpbmRleCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBpZiAo YXJndW1lbnRzLmxlbmd0aCA9PSAxKSByZXR1cm4gJChTZWxlY3Rvci5oYW5kbGVy cy5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKGVsZW1lbnQpKTsKICAgIHZhciBwcmV2 aW91c1NpYmxpbmdzID0gZWxlbWVudC5wcmV2aW91c1NpYmxpbmdzKCk7CiAgICBy ZXR1cm4gT2JqZWN0LmlzTnVtYmVyKGV4cHJlc3Npb24pID8gcHJldmlvdXNTaWJs aW5nc1tleHByZXNzaW9uXSA6CiAgICAgIFNlbGVjdG9yLmZpbmRFbGVtZW50KHBy ZXZpb3VzU2libGluZ3MsIGV4cHJlc3Npb24sIGluZGV4KTsKICB9LAoKICBuZXh0 OiBmdW5jdGlvbihlbGVtZW50LCBleHByZXNzaW9uLCBpbmRleCkgewogICAgZWxl bWVudCA9ICQoZWxlbWVudCk7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAx KSByZXR1cm4gJChTZWxlY3Rvci5oYW5kbGVycy5uZXh0RWxlbWVudFNpYmxpbmco ZWxlbWVudCkpOwogICAgdmFyIG5leHRTaWJsaW5ncyA9IGVsZW1lbnQubmV4dFNp YmxpbmdzKCk7CiAgICByZXR1cm4gT2JqZWN0LmlzTnVtYmVyKGV4cHJlc3Npb24p ID8gbmV4dFNpYmxpbmdzW2V4cHJlc3Npb25dIDoKICAgICAgU2VsZWN0b3IuZmlu ZEVsZW1lbnQobmV4dFNpYmxpbmdzLCBleHByZXNzaW9uLCBpbmRleCk7CiAgfSwK CiAgc2VsZWN0OiBmdW5jdGlvbigpIHsKICAgIHZhciBhcmdzID0gJEEoYXJndW1l bnRzKSwgZWxlbWVudCA9ICQoYXJncy5zaGlmdCgpKTsKICAgIHJldHVybiBTZWxl Y3Rvci5maW5kQ2hpbGRFbGVtZW50cyhlbGVtZW50LCBhcmdzKTsKICB9LAoKICBh ZGphY2VudDogZnVuY3Rpb24oKSB7CiAgICB2YXIgYXJncyA9ICRBKGFyZ3VtZW50 cyksIGVsZW1lbnQgPSAkKGFyZ3Muc2hpZnQoKSk7CiAgICByZXR1cm4gU2VsZWN0 b3IuZmluZENoaWxkRWxlbWVudHMoZWxlbWVudC5wYXJlbnROb2RlLCBhcmdzKS53 aXRob3V0KGVsZW1lbnQpOwogIH0sCgogIGlkZW50aWZ5OiBmdW5jdGlvbihlbGVt ZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHZhciBpZCA9IGVs ZW1lbnQucmVhZEF0dHJpYnV0ZSgnaWQnKSwgc2VsZiA9IGFyZ3VtZW50cy5jYWxs ZWU7CiAgICBpZiAoaWQpIHJldHVybiBpZDsKICAgIGRvIHsgaWQgPSAnYW5vbnlt b3VzX2VsZW1lbnRfJyArIHNlbGYuY291bnRlcisrIH0gd2hpbGUgKCQoaWQpKTsK ICAgIGVsZW1lbnQud3JpdGVBdHRyaWJ1dGUoJ2lkJywgaWQpOwogICAgcmV0dXJu IGlkOwogIH0sCgogIHJlYWRBdHRyaWJ1dGU6IGZ1bmN0aW9uKGVsZW1lbnQsIG5h bWUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKFByb3RvdHlw ZS5Ccm93c2VyLklFKSB7CiAgICAgIHZhciB0ID0gRWxlbWVudC5fYXR0cmlidXRl VHJhbnNsYXRpb25zLnJlYWQ7CiAgICAgIGlmICh0LnZhbHVlc1tuYW1lXSkgcmV0 dXJuIHQudmFsdWVzW25hbWVdKGVsZW1lbnQsIG5hbWUpOwogICAgICBpZiAodC5u YW1lc1tuYW1lXSkgbmFtZSA9IHQubmFtZXNbbmFtZV07CiAgICAgIGlmIChuYW1l LmluY2x1ZGUoJzonKSkgewogICAgICAgIHJldHVybiAoIWVsZW1lbnQuYXR0cmli dXRlcyB8fCAhZWxlbWVudC5hdHRyaWJ1dGVzW25hbWVdKSA/IG51bGwgOgogICAg ICAgICBlbGVtZW50LmF0dHJpYnV0ZXNbbmFtZV0udmFsdWU7CiAgICAgIH0KICAg IH0KICAgIHJldHVybiBlbGVtZW50LmdldEF0dHJpYnV0ZShuYW1lKTsKICB9LAoK ICB3cml0ZUF0dHJpYnV0ZTogZnVuY3Rpb24oZWxlbWVudCwgbmFtZSwgdmFsdWUp IHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIGF0dHJpYnV0ZXMg PSB7IH0sIHQgPSBFbGVtZW50Ll9hdHRyaWJ1dGVUcmFuc2xhdGlvbnMud3JpdGU7 CgogICAgaWYgKHR5cGVvZiBuYW1lID09ICdvYmplY3QnKSBhdHRyaWJ1dGVzID0g bmFtZTsKICAgIGVsc2UgYXR0cmlidXRlc1tuYW1lXSA9IE9iamVjdC5pc1VuZGVm aW5lZCh2YWx1ZSkgPyB0cnVlIDogdmFsdWU7CgogICAgZm9yICh2YXIgYXR0ciBp biBhdHRyaWJ1dGVzKSB7CiAgICAgIG5hbWUgPSB0Lm5hbWVzW2F0dHJdIHx8IGF0 dHI7CiAgICAgIHZhbHVlID0gYXR0cmlidXRlc1thdHRyXTsKICAgICAgaWYgKHQu dmFsdWVzW2F0dHJdKSBuYW1lID0gdC52YWx1ZXNbYXR0cl0oZWxlbWVudCwgdmFs dWUpOwogICAgICBpZiAodmFsdWUgPT09IGZhbHNlIHx8IHZhbHVlID09PSBudWxs KQogICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUpOwogICAgICBl bHNlIGlmICh2YWx1ZSA9PT0gdHJ1ZSkKICAgICAgICBlbGVtZW50LnNldEF0dHJp YnV0ZShuYW1lLCBuYW1lKTsKICAgICAgZWxzZSBlbGVtZW50LnNldEF0dHJpYnV0 ZShuYW1lLCB2YWx1ZSk7CiAgICB9CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoK ICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHJldHVybiAkKGVs ZW1lbnQpLmdldERpbWVuc2lvbnMoKS5oZWlnaHQ7CiAgfSwKCiAgZ2V0V2lkdGg6 IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHJldHVybiAkKGVsZW1lbnQpLmdldERp bWVuc2lvbnMoKS53aWR0aDsKICB9LAoKICBjbGFzc05hbWVzOiBmdW5jdGlvbihl bGVtZW50KSB7CiAgICByZXR1cm4gbmV3IEVsZW1lbnQuQ2xhc3NOYW1lcyhlbGVt ZW50KTsKICB9LAoKICBoYXNDbGFzc05hbWU6IGZ1bmN0aW9uKGVsZW1lbnQsIGNs YXNzTmFtZSkgewogICAgaWYgKCEoZWxlbWVudCA9ICQoZWxlbWVudCkpKSByZXR1 cm47CiAgICB2YXIgZWxlbWVudENsYXNzTmFtZSA9IGVsZW1lbnQuY2xhc3NOYW1l OwogICAgcmV0dXJuIChlbGVtZW50Q2xhc3NOYW1lLmxlbmd0aCA+IDAgJiYgKGVs ZW1lbnRDbGFzc05hbWUgPT0gY2xhc3NOYW1lIHx8CiAgICAgIG5ldyBSZWdFeHAo IihefFxccykiICsgY2xhc3NOYW1lICsgIihcXHN8JCkiKS50ZXN0KGVsZW1lbnRD bGFzc05hbWUpKSk7CiAgfSwKCiAgYWRkQ2xhc3NOYW1lOiBmdW5jdGlvbihlbGVt ZW50LCBjbGFzc05hbWUpIHsKICAgIGlmICghKGVsZW1lbnQgPSAkKGVsZW1lbnQp KSkgcmV0dXJuOwogICAgaWYgKCFlbGVtZW50Lmhhc0NsYXNzTmFtZShjbGFzc05h bWUpKQogICAgICBlbGVtZW50LmNsYXNzTmFtZSArPSAoZWxlbWVudC5jbGFzc05h bWUgPyAnICcgOiAnJykgKyBjbGFzc05hbWU7CiAgICByZXR1cm4gZWxlbWVudDsK ICB9LAoKICByZW1vdmVDbGFzc05hbWU6IGZ1bmN0aW9uKGVsZW1lbnQsIGNsYXNz TmFtZSkgewogICAgaWYgKCEoZWxlbWVudCA9ICQoZWxlbWVudCkpKSByZXR1cm47 CiAgICBlbGVtZW50LmNsYXNzTmFtZSA9IGVsZW1lbnQuY2xhc3NOYW1lLnJlcGxh Y2UoCiAgICAgIG5ldyBSZWdFeHAoIihefFxccyspIiArIGNsYXNzTmFtZSArICIo XFxzK3wkKSIpLCAnICcpLnN0cmlwKCk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9 LAoKICB0b2dnbGVDbGFzc05hbWU6IGZ1bmN0aW9uKGVsZW1lbnQsIGNsYXNzTmFt ZSkgewogICAgaWYgKCEoZWxlbWVudCA9ICQoZWxlbWVudCkpKSByZXR1cm47CiAg ICByZXR1cm4gZWxlbWVudFtlbGVtZW50Lmhhc0NsYXNzTmFtZShjbGFzc05hbWUp ID8KICAgICAgJ3JlbW92ZUNsYXNzTmFtZScgOiAnYWRkQ2xhc3NOYW1lJ10oY2xh c3NOYW1lKTsKICB9LAoKICAvLyByZW1vdmVzIHdoaXRlc3BhY2Utb25seSB0ZXh0 IG5vZGUgY2hpbGRyZW4KICBjbGVhbldoaXRlc3BhY2U6IGZ1bmN0aW9uKGVsZW1l bnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIG5vZGUgPSBl bGVtZW50LmZpcnN0Q2hpbGQ7CiAgICB3aGlsZSAobm9kZSkgewogICAgICB2YXIg bmV4dE5vZGUgPSBub2RlLm5leHRTaWJsaW5nOwogICAgICBpZiAobm9kZS5ub2Rl VHlwZSA9PSAzICYmICEvXFMvLnRlc3Qobm9kZS5ub2RlVmFsdWUpKQogICAgICAg IGVsZW1lbnQucmVtb3ZlQ2hpbGQobm9kZSk7CiAgICAgIG5vZGUgPSBuZXh0Tm9k ZTsKICAgIH0KICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIGVtcHR5OiBmdW5j dGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4gJChlbGVtZW50KS5pbm5lckhUTUwu YmxhbmsoKTsKICB9LAoKICBkZXNjZW5kYW50T2Y6IGZ1bmN0aW9uKGVsZW1lbnQs IGFuY2VzdG9yKSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KSwgYW5jZXN0b3Ig PSAkKGFuY2VzdG9yKTsKCiAgICBpZiAoZWxlbWVudC5jb21wYXJlRG9jdW1lbnRQ b3NpdGlvbikKICAgICAgcmV0dXJuIChlbGVtZW50LmNvbXBhcmVEb2N1bWVudFBv c2l0aW9uKGFuY2VzdG9yKSAmIDgpID09PSA4OwoKICAgIGlmIChhbmNlc3Rvci5j b250YWlucykKICAgICAgcmV0dXJuIGFuY2VzdG9yLmNvbnRhaW5zKGVsZW1lbnQp ICYmIGFuY2VzdG9yICE9PSBlbGVtZW50OwoKICAgIHdoaWxlIChlbGVtZW50ID0g ZWxlbWVudC5wYXJlbnROb2RlKQogICAgICBpZiAoZWxlbWVudCA9PSBhbmNlc3Rv cikgcmV0dXJuIHRydWU7CgogICAgcmV0dXJuIGZhbHNlOwogIH0sCgogIHNjcm9s bFRvOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50 KTsKICAgIHZhciBwb3MgPSBlbGVtZW50LmN1bXVsYXRpdmVPZmZzZXQoKTsKICAg IHdpbmRvdy5zY3JvbGxUbyhwb3NbMF0sIHBvc1sxXSk7CiAgICByZXR1cm4gZWxl bWVudDsKICB9LAoKICBnZXRTdHlsZTogZnVuY3Rpb24oZWxlbWVudCwgc3R5bGUp IHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgc3R5bGUgPSBzdHlsZSA9 PSAnZmxvYXQnID8gJ2Nzc0Zsb2F0JyA6IHN0eWxlLmNhbWVsaXplKCk7CiAgICB2 YXIgdmFsdWUgPSBlbGVtZW50LnN0eWxlW3N0eWxlXTsKICAgIGlmICghdmFsdWUg fHwgdmFsdWUgPT0gJ2F1dG8nKSB7CiAgICAgIHZhciBjc3MgPSBkb2N1bWVudC5k ZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsIG51bGwpOwogICAg ICB2YWx1ZSA9IGNzcyA/IGNzc1tzdHlsZV0gOiBudWxsOwogICAgfQogICAgaWYg KHN0eWxlID09ICdvcGFjaXR5JykgcmV0dXJuIHZhbHVlID8gcGFyc2VGbG9hdCh2 YWx1ZSkgOiAxLjA7CiAgICByZXR1cm4gdmFsdWUgPT0gJ2F1dG8nID8gbnVsbCA6 IHZhbHVlOwogIH0sCgogIGdldE9wYWNpdHk6IGZ1bmN0aW9uKGVsZW1lbnQpIHsK ICAgIHJldHVybiAkKGVsZW1lbnQpLmdldFN0eWxlKCdvcGFjaXR5Jyk7CiAgfSwK CiAgc2V0U3R5bGU6IGZ1bmN0aW9uKGVsZW1lbnQsIHN0eWxlcykgewogICAgZWxl bWVudCA9ICQoZWxlbWVudCk7CiAgICB2YXIgZWxlbWVudFN0eWxlID0gZWxlbWVu dC5zdHlsZSwgbWF0Y2g7CiAgICBpZiAoT2JqZWN0LmlzU3RyaW5nKHN0eWxlcykp IHsKICAgICAgZWxlbWVudC5zdHlsZS5jc3NUZXh0ICs9ICc7JyArIHN0eWxlczsK ICAgICAgcmV0dXJuIHN0eWxlcy5pbmNsdWRlKCdvcGFjaXR5JykgPwogICAgICAg IGVsZW1lbnQuc2V0T3BhY2l0eShzdHlsZXMubWF0Y2goL29wYWNpdHk6XHMqKFxk P1wuP1xkKikvKVsxXSkgOiBlbGVtZW50OwogICAgfQogICAgZm9yICh2YXIgcHJv cGVydHkgaW4gc3R5bGVzKQogICAgICBpZiAocHJvcGVydHkgPT0gJ29wYWNpdHkn KSBlbGVtZW50LnNldE9wYWNpdHkoc3R5bGVzW3Byb3BlcnR5XSk7CiAgICAgIGVs c2UKICAgICAgICBlbGVtZW50U3R5bGVbKHByb3BlcnR5ID09ICdmbG9hdCcgfHwg cHJvcGVydHkgPT0gJ2Nzc0Zsb2F0JykgPwogICAgICAgICAgKE9iamVjdC5pc1Vu ZGVmaW5lZChlbGVtZW50U3R5bGUuc3R5bGVGbG9hdCkgPyAnY3NzRmxvYXQnIDog J3N0eWxlRmxvYXQnKSA6CiAgICAgICAgICAgIHByb3BlcnR5XSA9IHN0eWxlc1tw cm9wZXJ0eV07CgogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgc2V0T3BhY2l0 eTogZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUpIHsKICAgIGVsZW1lbnQgPSAkKGVs ZW1lbnQpOwogICAgZWxlbWVudC5zdHlsZS5vcGFjaXR5ID0gKHZhbHVlID09IDEg fHwgdmFsdWUgPT09ICcnKSA/ICcnIDoKICAgICAgKHZhbHVlIDwgMC4wMDAwMSkg PyAwIDogdmFsdWU7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBnZXREaW1l bnNpb25zOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVt ZW50KTsKICAgIHZhciBkaXNwbGF5ID0gZWxlbWVudC5nZXRTdHlsZSgnZGlzcGxh eScpOwogICAgaWYgKGRpc3BsYXkgIT0gJ25vbmUnICYmIGRpc3BsYXkgIT0gbnVs bCkgLy8gU2FmYXJpIGJ1ZwogICAgICByZXR1cm4ge3dpZHRoOiBlbGVtZW50Lm9m ZnNldFdpZHRoLCBoZWlnaHQ6IGVsZW1lbnQub2Zmc2V0SGVpZ2h0fTsKCiAgICAv LyBBbGwgKldpZHRoIGFuZCAqSGVpZ2h0IHByb3BlcnRpZXMgZ2l2ZSAwIG9uIGVs ZW1lbnRzIHdpdGggZGlzcGxheSBub25lLAogICAgLy8gc28gZW5hYmxlIHRoZSBl bGVtZW50IHRlbXBvcmFyaWx5CiAgICB2YXIgZWxzID0gZWxlbWVudC5zdHlsZTsK ICAgIHZhciBvcmlnaW5hbFZpc2liaWxpdHkgPSBlbHMudmlzaWJpbGl0eTsKICAg IHZhciBvcmlnaW5hbFBvc2l0aW9uID0gZWxzLnBvc2l0aW9uOwogICAgdmFyIG9y aWdpbmFsRGlzcGxheSA9IGVscy5kaXNwbGF5OwogICAgZWxzLnZpc2liaWxpdHkg PSAnaGlkZGVuJzsKICAgIGVscy5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CiAgICBl bHMuZGlzcGxheSA9ICdibG9jayc7CiAgICB2YXIgb3JpZ2luYWxXaWR0aCA9IGVs ZW1lbnQuY2xpZW50V2lkdGg7CiAgICB2YXIgb3JpZ2luYWxIZWlnaHQgPSBlbGVt ZW50LmNsaWVudEhlaWdodDsKICAgIGVscy5kaXNwbGF5ID0gb3JpZ2luYWxEaXNw bGF5OwogICAgZWxzLnBvc2l0aW9uID0gb3JpZ2luYWxQb3NpdGlvbjsKICAgIGVs cy52aXNpYmlsaXR5ID0gb3JpZ2luYWxWaXNpYmlsaXR5OwogICAgcmV0dXJuIHt3 aWR0aDogb3JpZ2luYWxXaWR0aCwgaGVpZ2h0OiBvcmlnaW5hbEhlaWdodH07CiAg fSwKCiAgbWFrZVBvc2l0aW9uZWQ6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGVs ZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIHBvcyA9IEVsZW1lbnQuZ2V0U3R5 bGUoZWxlbWVudCwgJ3Bvc2l0aW9uJyk7CiAgICBpZiAocG9zID09ICdzdGF0aWMn IHx8ICFwb3MpIHsKICAgICAgZWxlbWVudC5fbWFkZVBvc2l0aW9uZWQgPSB0cnVl OwogICAgICBlbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJzsKICAg ICAgLy8gT3BlcmEgcmV0dXJucyB0aGUgb2Zmc2V0IHJlbGF0aXZlIHRvIHRoZSBw b3NpdGlvbmluZyBjb250ZXh0LCB3aGVuIGFuCiAgICAgIC8vIGVsZW1lbnQgaXMg cG9zaXRpb24gcmVsYXRpdmUgYnV0IHRvcCBhbmQgbGVmdCBoYXZlIG5vdCBiZWVu IGRlZmluZWQKICAgICAgaWYgKFByb3RvdHlwZS5Ccm93c2VyLk9wZXJhKSB7CiAg ICAgICAgZWxlbWVudC5zdHlsZS50b3AgPSAwOwogICAgICAgIGVsZW1lbnQuc3R5 bGUubGVmdCA9IDA7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBlbGVtZW50Owog IH0sCgogIHVuZG9Qb3NpdGlvbmVkOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBl bGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmIChlbGVtZW50Ll9tYWRlUG9zaXRp b25lZCkgewogICAgICBlbGVtZW50Ll9tYWRlUG9zaXRpb25lZCA9IHVuZGVmaW5l ZDsKICAgICAgZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9CiAgICAgICAgZWxlbWVu dC5zdHlsZS50b3AgPQogICAgICAgIGVsZW1lbnQuc3R5bGUubGVmdCA9CiAgICAg ICAgZWxlbWVudC5zdHlsZS5ib3R0b20gPQogICAgICAgIGVsZW1lbnQuc3R5bGUu cmlnaHQgPSAnJzsKICAgIH0KICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIG1h a2VDbGlwcGluZzogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQo ZWxlbWVudCk7CiAgICBpZiAoZWxlbWVudC5fb3ZlcmZsb3cpIHJldHVybiBlbGVt ZW50OwogICAgZWxlbWVudC5fb3ZlcmZsb3cgPSBFbGVtZW50LmdldFN0eWxlKGVs ZW1lbnQsICdvdmVyZmxvdycpIHx8ICdhdXRvJzsKICAgIGlmIChlbGVtZW50Ll9v dmVyZmxvdyAhPT0gJ2hpZGRlbicpCiAgICAgIGVsZW1lbnQuc3R5bGUub3ZlcmZs b3cgPSAnaGlkZGVuJzsKICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIHVuZG9D bGlwcGluZzogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxl bWVudCk7CiAgICBpZiAoIWVsZW1lbnQuX292ZXJmbG93KSByZXR1cm4gZWxlbWVu dDsKICAgIGVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSBlbGVtZW50Ll9vdmVyZmxv dyA9PSAnYXV0bycgPyAnJyA6IGVsZW1lbnQuX292ZXJmbG93OwogICAgZWxlbWVu dC5fb3ZlcmZsb3cgPSBudWxsOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAg Y3VtdWxhdGl2ZU9mZnNldDogZnVuY3Rpb24oZWxlbWVudCkgewogICAgdmFyIHZh bHVlVCA9IDAsIHZhbHVlTCA9IDA7CiAgICBkbyB7CiAgICAgIHZhbHVlVCArPSBl bGVtZW50Lm9mZnNldFRvcCAgfHwgMDsKICAgICAgdmFsdWVMICs9IGVsZW1lbnQu b2Zmc2V0TGVmdCB8fCAwOwogICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQ YXJlbnQ7CiAgICB9IHdoaWxlIChlbGVtZW50KTsKICAgIHJldHVybiBFbGVtZW50 Ll9yZXR1cm5PZmZzZXQodmFsdWVMLCB2YWx1ZVQpOwogIH0sCgogIHBvc2l0aW9u ZWRPZmZzZXQ6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHZhciB2YWx1ZVQgPSAw LCB2YWx1ZUwgPSAwOwogICAgZG8gewogICAgICB2YWx1ZVQgKz0gZWxlbWVudC5v ZmZzZXRUb3AgIHx8IDA7CiAgICAgIHZhbHVlTCArPSBlbGVtZW50Lm9mZnNldExl ZnQgfHwgMDsKICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50Owog ICAgICBpZiAoZWxlbWVudCkgewogICAgICAgIGlmIChlbGVtZW50LnRhZ05hbWUu dG9VcHBlckNhc2UoKSA9PSAnQk9EWScpIGJyZWFrOwogICAgICAgIHZhciBwID0g RWxlbWVudC5nZXRTdHlsZShlbGVtZW50LCAncG9zaXRpb24nKTsKICAgICAgICBp ZiAocCAhPT0gJ3N0YXRpYycpIGJyZWFrOwogICAgICB9CiAgICB9IHdoaWxlIChl bGVtZW50KTsKICAgIHJldHVybiBFbGVtZW50Ll9yZXR1cm5PZmZzZXQodmFsdWVM LCB2YWx1ZVQpOwogIH0sCgogIGFic29sdXRpemU6IGZ1bmN0aW9uKGVsZW1lbnQp IHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKGVsZW1lbnQuZ2V0 U3R5bGUoJ3Bvc2l0aW9uJykgPT0gJ2Fic29sdXRlJykgcmV0dXJuIGVsZW1lbnQ7 CiAgICAvLyBQb3NpdGlvbi5wcmVwYXJlKCk7IC8vIFRvIGJlIGRvbmUgbWFudWFs bHkgYnkgU2NyaXB0eSB3aGVuIGl0IG5lZWRzIGl0LgoKICAgIHZhciBvZmZzZXRz ID0gZWxlbWVudC5wb3NpdGlvbmVkT2Zmc2V0KCk7CiAgICB2YXIgdG9wICAgICA9 IG9mZnNldHNbMV07CiAgICB2YXIgbGVmdCAgICA9IG9mZnNldHNbMF07CiAgICB2 YXIgd2lkdGggICA9IGVsZW1lbnQuY2xpZW50V2lkdGg7CiAgICB2YXIgaGVpZ2h0 ICA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0OwoKICAgIGVsZW1lbnQuX29yaWdpbmFs TGVmdCAgID0gbGVmdCAtIHBhcnNlRmxvYXQoZWxlbWVudC5zdHlsZS5sZWZ0ICB8 fCAwKTsKICAgIGVsZW1lbnQuX29yaWdpbmFsVG9wICAgID0gdG9wICAtIHBhcnNl RmxvYXQoZWxlbWVudC5zdHlsZS50b3AgfHwgMCk7CiAgICBlbGVtZW50Ll9vcmln aW5hbFdpZHRoICA9IGVsZW1lbnQuc3R5bGUud2lkdGg7CiAgICBlbGVtZW50Ll9v cmlnaW5hbEhlaWdodCA9IGVsZW1lbnQuc3R5bGUuaGVpZ2h0OwoKICAgIGVsZW1l bnQuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOwogICAgZWxlbWVudC5zdHls ZS50b3AgICAgPSB0b3AgKyAncHgnOwogICAgZWxlbWVudC5zdHlsZS5sZWZ0ICAg PSBsZWZ0ICsgJ3B4JzsKICAgIGVsZW1lbnQuc3R5bGUud2lkdGggID0gd2lkdGgg KyAncHgnOwogICAgZWxlbWVudC5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyAncHgn OwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgcmVsYXRpdml6ZTogZnVuY3Rp b24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBpZiAo ZWxlbWVudC5nZXRTdHlsZSgncG9zaXRpb24nKSA9PSAncmVsYXRpdmUnKSByZXR1 cm4gZWxlbWVudDsKICAgIC8vIFBvc2l0aW9uLnByZXBhcmUoKTsgLy8gVG8gYmUg ZG9uZSBtYW51YWxseSBieSBTY3JpcHR5IHdoZW4gaXQgbmVlZHMgaXQuCgogICAg ZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7CiAgICB2YXIgdG9w ICA9IHBhcnNlRmxvYXQoZWxlbWVudC5zdHlsZS50b3AgIHx8IDApIC0gKGVsZW1l bnQuX29yaWdpbmFsVG9wIHx8IDApOwogICAgdmFyIGxlZnQgPSBwYXJzZUZsb2F0 KGVsZW1lbnQuc3R5bGUubGVmdCB8fCAwKSAtIChlbGVtZW50Ll9vcmlnaW5hbExl ZnQgfHwgMCk7CgogICAgZWxlbWVudC5zdHlsZS50b3AgICAgPSB0b3AgKyAncHgn OwogICAgZWxlbWVudC5zdHlsZS5sZWZ0ICAgPSBsZWZ0ICsgJ3B4JzsKICAgIGVs ZW1lbnQuc3R5bGUuaGVpZ2h0ID0gZWxlbWVudC5fb3JpZ2luYWxIZWlnaHQ7CiAg ICBlbGVtZW50LnN0eWxlLndpZHRoICA9IGVsZW1lbnQuX29yaWdpbmFsV2lkdGg7 CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBjdW11bGF0aXZlU2Nyb2xsT2Zm c2V0OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICB2YXIgdmFsdWVUID0gMCwgdmFs dWVMID0gMDsKICAgIGRvIHsKICAgICAgdmFsdWVUICs9IGVsZW1lbnQuc2Nyb2xs VG9wICB8fCAwOwogICAgICB2YWx1ZUwgKz0gZWxlbWVudC5zY3JvbGxMZWZ0IHx8 IDA7CiAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGU7CiAgICB9IHdo aWxlIChlbGVtZW50KTsKICAgIHJldHVybiBFbGVtZW50Ll9yZXR1cm5PZmZzZXQo dmFsdWVMLCB2YWx1ZVQpOwogIH0sCgogIGdldE9mZnNldFBhcmVudDogZnVuY3Rp b24oZWxlbWVudCkgewogICAgaWYgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSByZXR1 cm4gJChlbGVtZW50Lm9mZnNldFBhcmVudCk7CiAgICBpZiAoZWxlbWVudCA9PSBk b2N1bWVudC5ib2R5KSByZXR1cm4gJChlbGVtZW50KTsKCiAgICB3aGlsZSAoKGVs ZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGUpICYmIGVsZW1lbnQgIT0gZG9jdW1l bnQuYm9keSkKICAgICAgaWYgKEVsZW1lbnQuZ2V0U3R5bGUoZWxlbWVudCwgJ3Bv c2l0aW9uJykgIT0gJ3N0YXRpYycpCiAgICAgICAgcmV0dXJuICQoZWxlbWVudCk7 CgogICAgcmV0dXJuICQoZG9jdW1lbnQuYm9keSk7CiAgfSwKCiAgdmlld3BvcnRP ZmZzZXQ6IGZ1bmN0aW9uKGZvckVsZW1lbnQpIHsKICAgIHZhciB2YWx1ZVQgPSAw LCB2YWx1ZUwgPSAwOwoKICAgIHZhciBlbGVtZW50ID0gZm9yRWxlbWVudDsKICAg IGRvIHsKICAgICAgdmFsdWVUICs9IGVsZW1lbnQub2Zmc2V0VG9wICB8fCAwOwog ICAgICB2YWx1ZUwgKz0gZWxlbWVudC5vZmZzZXRMZWZ0IHx8IDA7CgogICAgICAv LyBTYWZhcmkgZml4CiAgICAgIGlmIChlbGVtZW50Lm9mZnNldFBhcmVudCA9PSBk b2N1bWVudC5ib2R5ICYmCiAgICAgICAgRWxlbWVudC5nZXRTdHlsZShlbGVtZW50 LCAncG9zaXRpb24nKSA9PSAnYWJzb2x1dGUnKSBicmVhazsKCiAgICB9IHdoaWxl IChlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQpOwoKICAgIGVsZW1lbnQg PSBmb3JFbGVtZW50OwogICAgZG8gewogICAgICBpZiAoIVByb3RvdHlwZS5Ccm93 c2VyLk9wZXJhIHx8IChlbGVtZW50LnRhZ05hbWUgJiYgKGVsZW1lbnQudGFnTmFt ZS50b1VwcGVyQ2FzZSgpID09ICdCT0RZJykpKSB7CiAgICAgICAgdmFsdWVUIC09 IGVsZW1lbnQuc2Nyb2xsVG9wICB8fCAwOwogICAgICAgIHZhbHVlTCAtPSBlbGVt ZW50LnNjcm9sbExlZnQgfHwgMDsKICAgICAgfQogICAgfSB3aGlsZSAoZWxlbWVu dCA9IGVsZW1lbnQucGFyZW50Tm9kZSk7CgogICAgcmV0dXJuIEVsZW1lbnQuX3Jl dHVybk9mZnNldCh2YWx1ZUwsIHZhbHVlVCk7CiAgfSwKCiAgY2xvbmVQb3NpdGlv bjogZnVuY3Rpb24oZWxlbWVudCwgc291cmNlKSB7CiAgICB2YXIgb3B0aW9ucyA9 IE9iamVjdC5leHRlbmQoewogICAgICBzZXRMZWZ0OiAgICB0cnVlLAogICAgICBz ZXRUb3A6ICAgICB0cnVlLAogICAgICBzZXRXaWR0aDogICB0cnVlLAogICAgICBz ZXRIZWlnaHQ6ICB0cnVlLAogICAgICBvZmZzZXRUb3A6ICAwLAogICAgICBvZmZz ZXRMZWZ0OiAwCiAgICB9LCBhcmd1bWVudHNbMl0gfHwgeyB9KTsKCiAgICAvLyBm aW5kIHBhZ2UgcG9zaXRpb24gb2Ygc291cmNlCiAgICBzb3VyY2UgPSAkKHNvdXJj ZSk7CiAgICB2YXIgcCA9IHNvdXJjZS52aWV3cG9ydE9mZnNldCgpOwoKICAgIC8v IGZpbmQgY29vcmRpbmF0ZSBzeXN0ZW0gdG8gdXNlCiAgICBlbGVtZW50ID0gJChl bGVtZW50KTsKICAgIHZhciBkZWx0YSA9IFswLCAwXTsKICAgIHZhciBwYXJlbnQg PSBudWxsOwogICAgLy8gZGVsdGEgWzAsMF0gd2lsbCBkbyBmaW5lIHdpdGggcG9z aXRpb246IGZpeGVkIGVsZW1lbnRzLAogICAgLy8gcG9zaXRpb246YWJzb2x1dGUg bmVlZHMgb2Zmc2V0UGFyZW50IGRlbHRhcwogICAgaWYgKEVsZW1lbnQuZ2V0U3R5 bGUoZWxlbWVudCwgJ3Bvc2l0aW9uJykgPT0gJ2Fic29sdXRlJykgewogICAgICBw YXJlbnQgPSBlbGVtZW50LmdldE9mZnNldFBhcmVudCgpOwogICAgICBkZWx0YSA9 IHBhcmVudC52aWV3cG9ydE9mZnNldCgpOwogICAgfQoKICAgIC8vIGNvcnJlY3Qg YnkgYm9keSBvZmZzZXRzIChmaXhlcyBTYWZhcmkpCiAgICBpZiAocGFyZW50ID09 IGRvY3VtZW50LmJvZHkpIHsKICAgICAgZGVsdGFbMF0gLT0gZG9jdW1lbnQuYm9k eS5vZmZzZXRMZWZ0OwogICAgICBkZWx0YVsxXSAtPSBkb2N1bWVudC5ib2R5Lm9m ZnNldFRvcDsKICAgIH0KCiAgICAvLyBzZXQgcG9zaXRpb24KICAgIGlmIChvcHRp b25zLnNldExlZnQpICAgZWxlbWVudC5zdHlsZS5sZWZ0ICA9IChwWzBdIC0gZGVs dGFbMF0gKyBvcHRpb25zLm9mZnNldExlZnQpICsgJ3B4JzsKICAgIGlmIChvcHRp b25zLnNldFRvcCkgICAgZWxlbWVudC5zdHlsZS50b3AgICA9IChwWzFdIC0gZGVs dGFbMV0gKyBvcHRpb25zLm9mZnNldFRvcCkgKyAncHgnOwogICAgaWYgKG9wdGlv bnMuc2V0V2lkdGgpICBlbGVtZW50LnN0eWxlLndpZHRoID0gc291cmNlLm9mZnNl dFdpZHRoICsgJ3B4JzsKICAgIGlmIChvcHRpb25zLnNldEhlaWdodCkgZWxlbWVu dC5zdHlsZS5oZWlnaHQgPSBzb3VyY2Uub2Zmc2V0SGVpZ2h0ICsgJ3B4JzsKICAg IHJldHVybiBlbGVtZW50OwogIH0KfTsKCkVsZW1lbnQuTWV0aG9kcy5pZGVudGlm eS5jb3VudGVyID0gMTsKCk9iamVjdC5leHRlbmQoRWxlbWVudC5NZXRob2RzLCB7 CiAgZ2V0RWxlbWVudHNCeVNlbGVjdG9yOiBFbGVtZW50Lk1ldGhvZHMuc2VsZWN0 LAogIGNoaWxkRWxlbWVudHM6IEVsZW1lbnQuTWV0aG9kcy5pbW1lZGlhdGVEZXNj ZW5kYW50cwp9KTsKCkVsZW1lbnQuX2F0dHJpYnV0ZVRyYW5zbGF0aW9ucyA9IHsK ICB3cml0ZTogewogICAgbmFtZXM6IHsKICAgICAgY2xhc3NOYW1lOiAnY2xhc3Mn LAogICAgICBodG1sRm9yOiAgICdmb3InCiAgICB9LAogICAgdmFsdWVzOiB7IH0K ICB9Cn07CgppZiAoUHJvdG90eXBlLkJyb3dzZXIuT3BlcmEpIHsKICBFbGVtZW50 Lk1ldGhvZHMuZ2V0U3R5bGUgPSBFbGVtZW50Lk1ldGhvZHMuZ2V0U3R5bGUud3Jh cCgKICAgIGZ1bmN0aW9uKHByb2NlZWQsIGVsZW1lbnQsIHN0eWxlKSB7CiAgICAg IHN3aXRjaCAoc3R5bGUpIHsKICAgICAgICBjYXNlICdsZWZ0JzogY2FzZSAndG9w JzogY2FzZSAncmlnaHQnOiBjYXNlICdib3R0b20nOgogICAgICAgICAgaWYgKHBy b2NlZWQoZWxlbWVudCwgJ3Bvc2l0aW9uJykgPT09ICdzdGF0aWMnKSByZXR1cm4g bnVsbDsKICAgICAgICBjYXNlICdoZWlnaHQnOiBjYXNlICd3aWR0aCc6CiAgICAg ICAgICAvLyByZXR1cm5zICcwcHgnIGZvciBoaWRkZW4gZWxlbWVudHM7IHdlIHdh bnQgaXQgdG8gcmV0dXJuIG51bGwKICAgICAgICAgIGlmICghRWxlbWVudC52aXNp YmxlKGVsZW1lbnQpKSByZXR1cm4gbnVsbDsKCiAgICAgICAgICAvLyByZXR1cm5z IHRoZSBib3JkZXItYm94IGRpbWVuc2lvbnMgcmF0aGVyIHRoYW4gdGhlIGNvbnRl bnQtYm94CiAgICAgICAgICAvLyBkaW1lbnNpb25zLCBzbyB3ZSBzdWJ0cmFjdCBw YWRkaW5nIGFuZCBib3JkZXJzIGZyb20gdGhlIHZhbHVlCiAgICAgICAgICB2YXIg ZGltID0gcGFyc2VJbnQocHJvY2VlZChlbGVtZW50LCBzdHlsZSksIDEwKTsKCiAg ICAgICAgICBpZiAoZGltICE9PSBlbGVtZW50WydvZmZzZXQnICsgc3R5bGUuY2Fw aXRhbGl6ZSgpXSkKICAgICAgICAgICAgcmV0dXJuIGRpbSArICdweCc7CgogICAg ICAgICAgdmFyIHByb3BlcnRpZXM7CiAgICAgICAgICBpZiAoc3R5bGUgPT09ICdo ZWlnaHQnKSB7CiAgICAgICAgICAgIHByb3BlcnRpZXMgPSBbJ2JvcmRlci10b3At d2lkdGgnLCAncGFkZGluZy10b3AnLAogICAgICAgICAgICAgJ3BhZGRpbmctYm90 dG9tJywgJ2JvcmRlci1ib3R0b20td2lkdGgnXTsKICAgICAgICAgIH0KICAgICAg ICAgIGVsc2UgewogICAgICAgICAgICBwcm9wZXJ0aWVzID0gWydib3JkZXItbGVm dC13aWR0aCcsICdwYWRkaW5nLWxlZnQnLAogICAgICAgICAgICAgJ3BhZGRpbmct cmlnaHQnLCAnYm9yZGVyLXJpZ2h0LXdpZHRoJ107CiAgICAgICAgICB9CiAgICAg ICAgICByZXR1cm4gcHJvcGVydGllcy5pbmplY3QoZGltLCBmdW5jdGlvbihtZW1v LCBwcm9wZXJ0eSkgewogICAgICAgICAgICB2YXIgdmFsID0gcHJvY2VlZChlbGVt ZW50LCBwcm9wZXJ0eSk7CiAgICAgICAgICAgIHJldHVybiB2YWwgPT09IG51bGwg PyBtZW1vIDogbWVtbyAtIHBhcnNlSW50KHZhbCwgMTApOwogICAgICAgICAgfSkg KyAncHgnOwogICAgICAgIGRlZmF1bHQ6IHJldHVybiBwcm9jZWVkKGVsZW1lbnQs IHN0eWxlKTsKICAgICAgfQogICAgfQogICk7CgogIEVsZW1lbnQuTWV0aG9kcy5y ZWFkQXR0cmlidXRlID0gRWxlbWVudC5NZXRob2RzLnJlYWRBdHRyaWJ1dGUud3Jh cCgKICAgIGZ1bmN0aW9uKHByb2NlZWQsIGVsZW1lbnQsIGF0dHJpYnV0ZSkgewog ICAgICBpZiAoYXR0cmlidXRlID09PSAndGl0bGUnKSByZXR1cm4gZWxlbWVudC50 aXRsZTsKICAgICAgcmV0dXJuIHByb2NlZWQoZWxlbWVudCwgYXR0cmlidXRlKTsK ICAgIH0KICApOwp9CgplbHNlIGlmIChQcm90b3R5cGUuQnJvd3Nlci5JRSkgewog IC8vIElFIGRvZXNuJ3QgcmVwb3J0IG9mZnNldHMgY29ycmVjdGx5IGZvciBzdGF0 aWMgZWxlbWVudHMsIHNvIHdlIGNoYW5nZSB0aGVtCiAgLy8gdG8gInJlbGF0aXZl IiB0byBnZXQgdGhlIHZhbHVlcywgdGhlbiBjaGFuZ2UgdGhlbSBiYWNrLgogIEVs ZW1lbnQuTWV0aG9kcy5nZXRPZmZzZXRQYXJlbnQgPSBFbGVtZW50Lk1ldGhvZHMu Z2V0T2Zmc2V0UGFyZW50LndyYXAoCiAgICBmdW5jdGlvbihwcm9jZWVkLCBlbGVt ZW50KSB7CiAgICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgICAvLyBJRSB0 aHJvd3MgYW4gZXJyb3IgaWYgZWxlbWVudCBpcyBub3QgaW4gZG9jdW1lbnQKICAg ICAgdHJ5IHsgZWxlbWVudC5vZmZzZXRQYXJlbnQgfQogICAgICBjYXRjaChlKSB7 IHJldHVybiAkKGRvY3VtZW50LmJvZHkpIH0KICAgICAgdmFyIHBvc2l0aW9uID0g ZWxlbWVudC5nZXRTdHlsZSgncG9zaXRpb24nKTsKICAgICAgaWYgKHBvc2l0aW9u ICE9PSAnc3RhdGljJykgcmV0dXJuIHByb2NlZWQoZWxlbWVudCk7CiAgICAgIGVs ZW1lbnQuc2V0U3R5bGUoeyBwb3NpdGlvbjogJ3JlbGF0aXZlJyB9KTsKICAgICAg dmFyIHZhbHVlID0gcHJvY2VlZChlbGVtZW50KTsKICAgICAgZWxlbWVudC5zZXRT dHlsZSh7IHBvc2l0aW9uOiBwb3NpdGlvbiB9KTsKICAgICAgcmV0dXJuIHZhbHVl OwogICAgfQogICk7CgogICR3KCdwb3NpdGlvbmVkT2Zmc2V0IHZpZXdwb3J0T2Zm c2V0JykuZWFjaChmdW5jdGlvbihtZXRob2QpIHsKICAgIEVsZW1lbnQuTWV0aG9k c1ttZXRob2RdID0gRWxlbWVudC5NZXRob2RzW21ldGhvZF0ud3JhcCgKICAgICAg ZnVuY3Rpb24ocHJvY2VlZCwgZWxlbWVudCkgewogICAgICAgIGVsZW1lbnQgPSAk KGVsZW1lbnQpOwogICAgICAgIHRyeSB7IGVsZW1lbnQub2Zmc2V0UGFyZW50IH0K ICAgICAgICBjYXRjaChlKSB7IHJldHVybiBFbGVtZW50Ll9yZXR1cm5PZmZzZXQo MCwwKSB9CiAgICAgICAgdmFyIHBvc2l0aW9uID0gZWxlbWVudC5nZXRTdHlsZSgn cG9zaXRpb24nKTsKICAgICAgICBpZiAocG9zaXRpb24gIT09ICdzdGF0aWMnKSBy ZXR1cm4gcHJvY2VlZChlbGVtZW50KTsKICAgICAgICAvLyBUcmlnZ2VyIGhhc0xh eW91dCBvbiB0aGUgb2Zmc2V0IHBhcmVudCBzbyB0aGF0IElFNiByZXBvcnRzCiAg ICAgICAgLy8gYWNjdXJhdGUgb2Zmc2V0VG9wIGFuZCBvZmZzZXRMZWZ0IHZhbHVl cyBmb3IgcG9zaXRpb246IGZpeGVkLgogICAgICAgIHZhciBvZmZzZXRQYXJlbnQg PSBlbGVtZW50LmdldE9mZnNldFBhcmVudCgpOwogICAgICAgIGlmIChvZmZzZXRQ YXJlbnQgJiYgb2Zmc2V0UGFyZW50LmdldFN0eWxlKCdwb3NpdGlvbicpID09PSAn Zml4ZWQnKQogICAgICAgICAgb2Zmc2V0UGFyZW50LnNldFN0eWxlKHsgem9vbTog MSB9KTsKICAgICAgICBlbGVtZW50LnNldFN0eWxlKHsgcG9zaXRpb246ICdyZWxh dGl2ZScgfSk7CiAgICAgICAgdmFyIHZhbHVlID0gcHJvY2VlZChlbGVtZW50KTsK ICAgICAgICBlbGVtZW50LnNldFN0eWxlKHsgcG9zaXRpb246IHBvc2l0aW9uIH0p OwogICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgfQogICAgKTsKICB9KTsKCiAg RWxlbWVudC5NZXRob2RzLmN1bXVsYXRpdmVPZmZzZXQgPSBFbGVtZW50Lk1ldGhv ZHMuY3VtdWxhdGl2ZU9mZnNldC53cmFwKAogICAgZnVuY3Rpb24ocHJvY2VlZCwg ZWxlbWVudCkgewogICAgICB0cnkgeyBlbGVtZW50Lm9mZnNldFBhcmVudCB9CiAg ICAgIGNhdGNoKGUpIHsgcmV0dXJuIEVsZW1lbnQuX3JldHVybk9mZnNldCgwLDAp IH0KICAgICAgcmV0dXJuIHByb2NlZWQoZWxlbWVudCk7CiAgICB9CiAgKTsKCiAg RWxlbWVudC5NZXRob2RzLmdldFN0eWxlID0gZnVuY3Rpb24oZWxlbWVudCwgc3R5 bGUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgc3R5bGUgPSAoc3R5 bGUgPT0gJ2Zsb2F0JyB8fCBzdHlsZSA9PSAnY3NzRmxvYXQnKSA/ICdzdHlsZUZs b2F0JyA6IHN0eWxlLmNhbWVsaXplKCk7CiAgICB2YXIgdmFsdWUgPSBlbGVtZW50 LnN0eWxlW3N0eWxlXTsKICAgIGlmICghdmFsdWUgJiYgZWxlbWVudC5jdXJyZW50 U3R5bGUpIHZhbHVlID0gZWxlbWVudC5jdXJyZW50U3R5bGVbc3R5bGVdOwoKICAg IGlmIChzdHlsZSA9PSAnb3BhY2l0eScpIHsKICAgICAgaWYgKHZhbHVlID0gKGVs ZW1lbnQuZ2V0U3R5bGUoJ2ZpbHRlcicpIHx8ICcnKS5tYXRjaCgvYWxwaGFcKG9w YWNpdHk9KC4qKVwpLykpCiAgICAgICAgaWYgKHZhbHVlWzFdKSByZXR1cm4gcGFy c2VGbG9hdCh2YWx1ZVsxXSkgLyAxMDA7CiAgICAgIHJldHVybiAxLjA7CiAgICB9 CgogICAgaWYgKHZhbHVlID09ICdhdXRvJykgewogICAgICBpZiAoKHN0eWxlID09 ICd3aWR0aCcgfHwgc3R5bGUgPT0gJ2hlaWdodCcpICYmIChlbGVtZW50LmdldFN0 eWxlKCdkaXNwbGF5JykgIT0gJ25vbmUnKSkKICAgICAgICByZXR1cm4gZWxlbWVu dFsnb2Zmc2V0JyArIHN0eWxlLmNhcGl0YWxpemUoKV0gKyAncHgnOwogICAgICBy ZXR1cm4gbnVsbDsKICAgIH0KICAgIHJldHVybiB2YWx1ZTsKICB9OwoKICBFbGVt ZW50Lk1ldGhvZHMuc2V0T3BhY2l0eSA9IGZ1bmN0aW9uKGVsZW1lbnQsIHZhbHVl KSB7CiAgICBmdW5jdGlvbiBzdHJpcEFscGhhKGZpbHRlcil7CiAgICAgIHJldHVy biBmaWx0ZXIucmVwbGFjZSgvYWxwaGFcKFteXCldKlwpL2dpLCcnKTsKICAgIH0K ICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIGN1cnJlbnRTdHlsZSA9 IGVsZW1lbnQuY3VycmVudFN0eWxlOwogICAgaWYgKChjdXJyZW50U3R5bGUgJiYg IWN1cnJlbnRTdHlsZS5oYXNMYXlvdXQpIHx8CiAgICAgICghY3VycmVudFN0eWxl ICYmIGVsZW1lbnQuc3R5bGUuem9vbSA9PSAnbm9ybWFsJykpCiAgICAgICAgZWxl bWVudC5zdHlsZS56b29tID0gMTsKCiAgICB2YXIgZmlsdGVyID0gZWxlbWVudC5n ZXRTdHlsZSgnZmlsdGVyJyksIHN0eWxlID0gZWxlbWVudC5zdHlsZTsKICAgIGlm ICh2YWx1ZSA9PSAxIHx8IHZhbHVlID09PSAnJykgewogICAgICAoZmlsdGVyID0g c3RyaXBBbHBoYShmaWx0ZXIpKSA/CiAgICAgICAgc3R5bGUuZmlsdGVyID0gZmls dGVyIDogc3R5bGUucmVtb3ZlQXR0cmlidXRlKCdmaWx0ZXInKTsKICAgICAgcmV0 dXJuIGVsZW1lbnQ7CiAgICB9IGVsc2UgaWYgKHZhbHVlIDwgMC4wMDAwMSkgdmFs dWUgPSAwOwogICAgc3R5bGUuZmlsdGVyID0gc3RyaXBBbHBoYShmaWx0ZXIpICsK ICAgICAgJ2FscGhhKG9wYWNpdHk9JyArICh2YWx1ZSAqIDEwMCkgKyAnKSc7CiAg ICByZXR1cm4gZWxlbWVudDsKICB9OwoKICBFbGVtZW50Ll9hdHRyaWJ1dGVUcmFu c2xhdGlvbnMgPSB7CiAgICByZWFkOiB7CiAgICAgIG5hbWVzOiB7CiAgICAgICAg J2NsYXNzJzogJ2NsYXNzTmFtZScsCiAgICAgICAgJ2Zvcic6ICAgJ2h0bWxGb3In CiAgICAgIH0sCiAgICAgIHZhbHVlczogewogICAgICAgIF9nZXRBdHRyOiBmdW5j dGlvbihlbGVtZW50LCBhdHRyaWJ1dGUpIHsKICAgICAgICAgIHJldHVybiBlbGVt ZW50LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIDIpOwogICAgICAgIH0sCiAgICAg ICAgX2dldEF0dHJOb2RlOiBmdW5jdGlvbihlbGVtZW50LCBhdHRyaWJ1dGUpIHsK ICAgICAgICAgIHZhciBub2RlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlKGF0 dHJpYnV0ZSk7CiAgICAgICAgICByZXR1cm4gbm9kZSA/IG5vZGUudmFsdWUgOiAi IjsKICAgICAgICB9LAogICAgICAgIF9nZXRFdjogZnVuY3Rpb24oZWxlbWVudCwg YXR0cmlidXRlKSB7CiAgICAgICAgICBhdHRyaWJ1dGUgPSBlbGVtZW50LmdldEF0 dHJpYnV0ZShhdHRyaWJ1dGUpOwogICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZSA/ IGF0dHJpYnV0ZS50b1N0cmluZygpLnNsaWNlKDIzLCAtMikgOiBudWxsOwogICAg ICAgIH0sCiAgICAgICAgX2ZsYWc6IGZ1bmN0aW9uKGVsZW1lbnQsIGF0dHJpYnV0 ZSkgewogICAgICAgICAgcmV0dXJuICQoZWxlbWVudCkuaGFzQXR0cmlidXRlKGF0 dHJpYnV0ZSkgPyBhdHRyaWJ1dGUgOiBudWxsOwogICAgICAgIH0sCiAgICAgICAg c3R5bGU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAgICAgIHJldHVybiBlbGVt ZW50LnN0eWxlLmNzc1RleHQudG9Mb3dlckNhc2UoKTsKICAgICAgICB9LAogICAg ICAgIHRpdGxlOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAgICAgICByZXR1cm4g ZWxlbWVudC50aXRsZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9OwoKICBF bGVtZW50Ll9hdHRyaWJ1dGVUcmFuc2xhdGlvbnMud3JpdGUgPSB7CiAgICBuYW1l czogT2JqZWN0LmV4dGVuZCh7CiAgICAgIGNlbGxwYWRkaW5nOiAnY2VsbFBhZGRp bmcnLAogICAgICBjZWxsc3BhY2luZzogJ2NlbGxTcGFjaW5nJwogICAgfSwgRWxl bWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zLnJlYWQubmFtZXMpLAogICAgdmFs dWVzOiB7CiAgICAgIGNoZWNrZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIHZhbHVlKSB7 CiAgICAgICAgZWxlbWVudC5jaGVja2VkID0gISF2YWx1ZTsKICAgICAgfSwKCiAg ICAgIHN0eWxlOiBmdW5jdGlvbihlbGVtZW50LCB2YWx1ZSkgewogICAgICAgIGVs ZW1lbnQuc3R5bGUuY3NzVGV4dCA9IHZhbHVlID8gdmFsdWUgOiAnJzsKICAgICAg fQogICAgfQogIH07CgogIEVsZW1lbnQuX2F0dHJpYnV0ZVRyYW5zbGF0aW9ucy5o YXMgPSB7fTsKCiAgJHcoJ2NvbFNwYW4gcm93U3BhbiB2QWxpZ24gZGF0ZVRpbWUg YWNjZXNzS2V5IHRhYkluZGV4ICcgKwogICAgICAnZW5jVHlwZSBtYXhMZW5ndGgg cmVhZE9ubHkgbG9uZ0Rlc2MgZnJhbWVCb3JkZXInKS5lYWNoKGZ1bmN0aW9uKGF0 dHIpIHsKICAgIEVsZW1lbnQuX2F0dHJpYnV0ZVRyYW5zbGF0aW9ucy53cml0ZS5u YW1lc1thdHRyLnRvTG93ZXJDYXNlKCldID0gYXR0cjsKICAgIEVsZW1lbnQuX2F0 dHJpYnV0ZVRyYW5zbGF0aW9ucy5oYXNbYXR0ci50b0xvd2VyQ2FzZSgpXSA9IGF0 dHI7CiAgfSk7CgogIChmdW5jdGlvbih2KSB7CiAgICBPYmplY3QuZXh0ZW5kKHYs IHsKICAgICAgaHJlZjogICAgICAgIHYuX2dldEF0dHIsCiAgICAgIHNyYzogICAg ICAgICB2Ll9nZXRBdHRyLAogICAgICB0eXBlOiAgICAgICAgdi5fZ2V0QXR0ciwK ICAgICAgYWN0aW9uOiAgICAgIHYuX2dldEF0dHJOb2RlLAogICAgICBkaXNhYmxl ZDogICAgdi5fZmxhZywKICAgICAgY2hlY2tlZDogICAgIHYuX2ZsYWcsCiAgICAg IHJlYWRvbmx5OiAgICB2Ll9mbGFnLAogICAgICBtdWx0aXBsZTogICAgdi5fZmxh ZywKICAgICAgb25sb2FkOiAgICAgIHYuX2dldEV2LAogICAgICBvbnVubG9hZDog ICAgdi5fZ2V0RXYsCiAgICAgIG9uY2xpY2s6ICAgICB2Ll9nZXRFdiwKICAgICAg b25kYmxjbGljazogIHYuX2dldEV2LAogICAgICBvbm1vdXNlZG93bjogdi5fZ2V0 RXYsCiAgICAgIG9ubW91c2V1cDogICB2Ll9nZXRFdiwKICAgICAgb25tb3VzZW92 ZXI6IHYuX2dldEV2LAogICAgICBvbm1vdXNlbW92ZTogdi5fZ2V0RXYsCiAgICAg IG9ubW91c2VvdXQ6ICB2Ll9nZXRFdiwKICAgICAgb25mb2N1czogICAgIHYuX2dl dEV2LAogICAgICBvbmJsdXI6ICAgICAgdi5fZ2V0RXYsCiAgICAgIG9ua2V5cHJl c3M6ICB2Ll9nZXRFdiwKICAgICAgb25rZXlkb3duOiAgIHYuX2dldEV2LAogICAg ICBvbmtleXVwOiAgICAgdi5fZ2V0RXYsCiAgICAgIG9uc3VibWl0OiAgICB2Ll9n ZXRFdiwKICAgICAgb25yZXNldDogICAgIHYuX2dldEV2LAogICAgICBvbnNlbGVj dDogICAgdi5fZ2V0RXYsCiAgICAgIG9uY2hhbmdlOiAgICB2Ll9nZXRFdgogICAg fSk7CiAgfSkoRWxlbWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zLnJlYWQudmFs dWVzKTsKfQoKZWxzZSBpZiAoUHJvdG90eXBlLkJyb3dzZXIuR2Vja28gJiYgL3J2 OjFcLjhcLjAvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpIHsKICBFbGVtZW50 Lk1ldGhvZHMuc2V0T3BhY2l0eSA9IGZ1bmN0aW9uKGVsZW1lbnQsIHZhbHVlKSB7 CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGVsZW1lbnQuc3R5bGUub3Bh Y2l0eSA9ICh2YWx1ZSA9PSAxKSA/IDAuOTk5OTk5IDoKICAgICAgKHZhbHVlID09 PSAnJykgPyAnJyA6ICh2YWx1ZSA8IDAuMDAwMDEpID8gMCA6IHZhbHVlOwogICAg cmV0dXJuIGVsZW1lbnQ7CiAgfTsKfQoKZWxzZSBpZiAoUHJvdG90eXBlLkJyb3dz ZXIuV2ViS2l0KSB7CiAgRWxlbWVudC5NZXRob2RzLnNldE9wYWNpdHkgPSBmdW5j dGlvbihlbGVtZW50LCB2YWx1ZSkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7 CiAgICBlbGVtZW50LnN0eWxlLm9wYWNpdHkgPSAodmFsdWUgPT0gMSB8fCB2YWx1 ZSA9PT0gJycpID8gJycgOgogICAgICAodmFsdWUgPCAwLjAwMDAxKSA/IDAgOiB2 YWx1ZTsKCiAgICBpZiAodmFsdWUgPT0gMSkKICAgICAgaWYoZWxlbWVudC50YWdO YW1lLnRvVXBwZXJDYXNlKCkgPT0gJ0lNRycgJiYgZWxlbWVudC53aWR0aCkgewog ICAgICAgIGVsZW1lbnQud2lkdGgrKzsgZWxlbWVudC53aWR0aC0tOwogICAgICB9 IGVsc2UgdHJ5IHsKICAgICAgICB2YXIgbiA9IGRvY3VtZW50LmNyZWF0ZVRleHRO b2RlKCcgJyk7CiAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChuKTsKICAgICAg ICBlbGVtZW50LnJlbW92ZUNoaWxkKG4pOwogICAgICB9IGNhdGNoIChlKSB7IH0K CiAgICByZXR1cm4gZWxlbWVudDsKICB9OwoKICAvLyBTYWZhcmkgcmV0dXJucyBt YXJnaW5zIG9uIGJvZHkgd2hpY2ggaXMgaW5jb3JyZWN0IGlmIHRoZSBjaGlsZCBp cyBhYnNvbHV0ZWx5CiAgLy8gcG9zaXRpb25lZC4gIEZvciBwZXJmb3JtYW5jZSBy ZWFzb25zLCByZWRlZmluZSBFbGVtZW50I2N1bXVsYXRpdmVPZmZzZXQgZm9yCiAg Ly8gS0hUTUwvV2ViS2l0IG9ubHkuCiAgRWxlbWVudC5NZXRob2RzLmN1bXVsYXRp dmVPZmZzZXQgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgICB2YXIgdmFsdWVUID0g MCwgdmFsdWVMID0gMDsKICAgIGRvIHsKICAgICAgdmFsdWVUICs9IGVsZW1lbnQu b2Zmc2V0VG9wICB8fCAwOwogICAgICB2YWx1ZUwgKz0gZWxlbWVudC5vZmZzZXRM ZWZ0IHx8IDA7CiAgICAgIGlmIChlbGVtZW50Lm9mZnNldFBhcmVudCA9PSBkb2N1 bWVudC5ib2R5KQogICAgICAgIGlmIChFbGVtZW50LmdldFN0eWxlKGVsZW1lbnQs ICdwb3NpdGlvbicpID09ICdhYnNvbHV0ZScpIGJyZWFrOwoKICAgICAgZWxlbWVu dCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OwogICAgfSB3aGlsZSAoZWxlbWVudCk7 CgogICAgcmV0dXJuIEVsZW1lbnQuX3JldHVybk9mZnNldCh2YWx1ZUwsIHZhbHVl VCk7CiAgfTsKfQoKaWYgKFByb3RvdHlwZS5Ccm93c2VyLklFIHx8IFByb3RvdHlw ZS5Ccm93c2VyLk9wZXJhKSB7CiAgLy8gSUUgYW5kIE9wZXJhIGFyZSBtaXNzaW5n IC5pbm5lckhUTUwgc3VwcG9ydCBmb3IgVEFCTEUtcmVsYXRlZCBhbmQgU0VMRUNU IGVsZW1lbnRzCiAgRWxlbWVudC5NZXRob2RzLnVwZGF0ZSA9IGZ1bmN0aW9uKGVs ZW1lbnQsIGNvbnRlbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwoKICAg IGlmIChjb250ZW50ICYmIGNvbnRlbnQudG9FbGVtZW50KSBjb250ZW50ID0gY29u dGVudC50b0VsZW1lbnQoKTsKICAgIGlmIChPYmplY3QuaXNFbGVtZW50KGNvbnRl bnQpKSByZXR1cm4gZWxlbWVudC51cGRhdGUoKS5pbnNlcnQoY29udGVudCk7Cgog ICAgY29udGVudCA9IE9iamVjdC50b0hUTUwoY29udGVudCk7CiAgICB2YXIgdGFn TmFtZSA9IGVsZW1lbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpOwoKICAgIGlmICh0 YWdOYW1lIGluIEVsZW1lbnQuX2luc2VydGlvblRyYW5zbGF0aW9ucy50YWdzKSB7 CiAgICAgICRBKGVsZW1lbnQuY2hpbGROb2RlcykuZWFjaChmdW5jdGlvbihub2Rl KSB7IGVsZW1lbnQucmVtb3ZlQ2hpbGQobm9kZSkgfSk7CiAgICAgIEVsZW1lbnQu X2dldENvbnRlbnRGcm9tQW5vbnltb3VzRWxlbWVudCh0YWdOYW1lLCBjb250ZW50 LnN0cmlwU2NyaXB0cygpKQogICAgICAgIC5lYWNoKGZ1bmN0aW9uKG5vZGUpIHsg ZWxlbWVudC5hcHBlbmRDaGlsZChub2RlKSB9KTsKICAgIH0KICAgIGVsc2UgZWxl bWVudC5pbm5lckhUTUwgPSBjb250ZW50LnN0cmlwU2NyaXB0cygpOwoKICAgIGNv bnRlbnQuZXZhbFNjcmlwdHMuYmluZChjb250ZW50KS5kZWZlcigpOwogICAgcmV0 dXJuIGVsZW1lbnQ7CiAgfTsKfQoKaWYgKCdvdXRlckhUTUwnIGluIGRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKSB7CiAgRWxlbWVudC5NZXRob2RzLnJlcGxh Y2UgPSBmdW5jdGlvbihlbGVtZW50LCBjb250ZW50KSB7CiAgICBlbGVtZW50ID0g JChlbGVtZW50KTsKCiAgICBpZiAoY29udGVudCAmJiBjb250ZW50LnRvRWxlbWVu dCkgY29udGVudCA9IGNvbnRlbnQudG9FbGVtZW50KCk7CiAgICBpZiAoT2JqZWN0 LmlzRWxlbWVudChjb250ZW50KSkgewogICAgICBlbGVtZW50LnBhcmVudE5vZGUu cmVwbGFjZUNoaWxkKGNvbnRlbnQsIGVsZW1lbnQpOwogICAgICByZXR1cm4gZWxl bWVudDsKICAgIH0KCiAgICBjb250ZW50ID0gT2JqZWN0LnRvSFRNTChjb250ZW50 KTsKICAgIHZhciBwYXJlbnQgPSBlbGVtZW50LnBhcmVudE5vZGUsIHRhZ05hbWUg PSBwYXJlbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpOwoKICAgIGlmIChFbGVtZW50 Ll9pbnNlcnRpb25UcmFuc2xhdGlvbnMudGFnc1t0YWdOYW1lXSkgewogICAgICB2 YXIgbmV4dFNpYmxpbmcgPSBlbGVtZW50Lm5leHQoKTsKICAgICAgdmFyIGZyYWdt ZW50cyA9IEVsZW1lbnQuX2dldENvbnRlbnRGcm9tQW5vbnltb3VzRWxlbWVudCh0 YWdOYW1lLCBjb250ZW50LnN0cmlwU2NyaXB0cygpKTsKICAgICAgcGFyZW50LnJl bW92ZUNoaWxkKGVsZW1lbnQpOwogICAgICBpZiAobmV4dFNpYmxpbmcpCiAgICAg ICAgZnJhZ21lbnRzLmVhY2goZnVuY3Rpb24obm9kZSkgeyBwYXJlbnQuaW5zZXJ0 QmVmb3JlKG5vZGUsIG5leHRTaWJsaW5nKSB9KTsKICAgICAgZWxzZQogICAgICAg IGZyYWdtZW50cy5lYWNoKGZ1bmN0aW9uKG5vZGUpIHsgcGFyZW50LmFwcGVuZENo aWxkKG5vZGUpIH0pOwogICAgfQogICAgZWxzZSBlbGVtZW50Lm91dGVySFRNTCA9 IGNvbnRlbnQuc3RyaXBTY3JpcHRzKCk7CgogICAgY29udGVudC5ldmFsU2NyaXB0 cy5iaW5kKGNvbnRlbnQpLmRlZmVyKCk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9 Owp9CgpFbGVtZW50Ll9yZXR1cm5PZmZzZXQgPSBmdW5jdGlvbihsLCB0KSB7CiAg dmFyIHJlc3VsdCA9IFtsLCB0XTsKICByZXN1bHQubGVmdCA9IGw7CiAgcmVzdWx0 LnRvcCA9IHQ7CiAgcmV0dXJuIHJlc3VsdDsKfTsKCkVsZW1lbnQuX2dldENvbnRl bnRGcm9tQW5vbnltb3VzRWxlbWVudCA9IGZ1bmN0aW9uKHRhZ05hbWUsIGh0bWwp IHsKICB2YXIgZGl2ID0gbmV3IEVsZW1lbnQoJ2RpdicpLCB0ID0gRWxlbWVudC5f aW5zZXJ0aW9uVHJhbnNsYXRpb25zLnRhZ3NbdGFnTmFtZV07CiAgaWYgKHQpIHsK ICAgIGRpdi5pbm5lckhUTUwgPSB0WzBdICsgaHRtbCArIHRbMV07CiAgICB0WzJd LnRpbWVzKGZ1bmN0aW9uKCkgeyBkaXYgPSBkaXYuZmlyc3RDaGlsZCB9KTsKICB9 IGVsc2UgZGl2LmlubmVySFRNTCA9IGh0bWw7CiAgcmV0dXJuICRBKGRpdi5jaGls ZE5vZGVzKTsKfTsKCkVsZW1lbnQuX2luc2VydGlvblRyYW5zbGF0aW9ucyA9IHsK ICBiZWZvcmU6IGZ1bmN0aW9uKGVsZW1lbnQsIG5vZGUpIHsKICAgIGVsZW1lbnQu cGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgZWxlbWVudCk7CiAgfSwKICB0 b3A6IGZ1bmN0aW9uKGVsZW1lbnQsIG5vZGUpIHsKICAgIGVsZW1lbnQuaW5zZXJ0 QmVmb3JlKG5vZGUsIGVsZW1lbnQuZmlyc3RDaGlsZCk7CiAgfSwKICBib3R0b206 IGZ1bmN0aW9uKGVsZW1lbnQsIG5vZGUpIHsKICAgIGVsZW1lbnQuYXBwZW5kQ2hp bGQobm9kZSk7CiAgfSwKICBhZnRlcjogZnVuY3Rpb24oZWxlbWVudCwgbm9kZSkg ewogICAgZWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShub2RlLCBlbGVt ZW50Lm5leHRTaWJsaW5nKTsKICB9LAogIHRhZ3M6IHsKICAgIFRBQkxFOiAgWyc8 dGFibGU+JywgICAgICAgICAgICAgICAgJzwvdGFibGU+JywgICAgICAgICAgICAg ICAgICAgMV0sCiAgICBUQk9EWTogIFsnPHRhYmxlPjx0Ym9keT4nLCAgICAgICAg ICc8L3Rib2R5PjwvdGFibGU+JywgICAgICAgICAgIDJdLAogICAgVFI6ICAgICBb Jzx0YWJsZT48dGJvZHk+PHRyPicsICAgICAnPC90cj48L3Rib2R5PjwvdGFibGU+ JywgICAgICAzXSwKICAgIFREOiAgICAgWyc8dGFibGU+PHRib2R5Pjx0cj48dGQ+ JywgJzwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+JywgNF0sCiAgICBTRUxFQ1Q6 IFsnPHNlbGVjdD4nLCAgICAgICAgICAgICAgICc8L3NlbGVjdD4nLCAgICAgICAg ICAgICAgICAgIDFdCiAgfQp9OwoKKGZ1bmN0aW9uKCkgewogIE9iamVjdC5leHRl bmQodGhpcy50YWdzLCB7CiAgICBUSEVBRDogdGhpcy50YWdzLlRCT0RZLAogICAg VEZPT1Q6IHRoaXMudGFncy5UQk9EWSwKICAgIFRIOiAgICB0aGlzLnRhZ3MuVEQK ICB9KTsKfSkuY2FsbChFbGVtZW50Ll9pbnNlcnRpb25UcmFuc2xhdGlvbnMpOwoK RWxlbWVudC5NZXRob2RzLlNpbXVsYXRlZCA9IHsKICBoYXNBdHRyaWJ1dGU6IGZ1 bmN0aW9uKGVsZW1lbnQsIGF0dHJpYnV0ZSkgewogICAgYXR0cmlidXRlID0gRWxl bWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zLmhhc1thdHRyaWJ1dGVdIHx8IGF0 dHJpYnV0ZTsKICAgIHZhciBub2RlID0gJChlbGVtZW50KS5nZXRBdHRyaWJ1dGVO b2RlKGF0dHJpYnV0ZSk7CiAgICByZXR1cm4gISEobm9kZSAmJiBub2RlLnNwZWNp ZmllZCk7CiAgfQp9OwoKRWxlbWVudC5NZXRob2RzLkJ5VGFnID0geyB9OwoKT2Jq ZWN0LmV4dGVuZChFbGVtZW50LCBFbGVtZW50Lk1ldGhvZHMpOwoKaWYgKCFQcm90 b3R5cGUuQnJvd3NlckZlYXR1cmVzLkVsZW1lbnRFeHRlbnNpb25zICYmCiAgICBk b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVsnX19wcm90b19fJ10pIHsKICB3 aW5kb3cuSFRNTEVsZW1lbnQgPSB7IH07CiAgd2luZG93LkhUTUxFbGVtZW50LnBy b3RvdHlwZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpWydfX3Byb3Rv X18nXTsKICBQcm90b3R5cGUuQnJvd3NlckZlYXR1cmVzLkVsZW1lbnRFeHRlbnNp b25zID0gdHJ1ZTsKfQoKRWxlbWVudC5leHRlbmQgPSAoZnVuY3Rpb24oKSB7CiAg aWYgKFByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuU3BlY2lmaWNFbGVtZW50RXh0 ZW5zaW9ucykKICAgIHJldHVybiBQcm90b3R5cGUuSzsKCiAgdmFyIE1ldGhvZHMg PSB7IH0sIEJ5VGFnID0gRWxlbWVudC5NZXRob2RzLkJ5VGFnOwoKICB2YXIgZXh0 ZW5kID0gT2JqZWN0LmV4dGVuZChmdW5jdGlvbihlbGVtZW50KSB7CiAgICBpZiAo IWVsZW1lbnQgfHwgZWxlbWVudC5fZXh0ZW5kZWRCeVByb3RvdHlwZSB8fAogICAg ICAgIGVsZW1lbnQubm9kZVR5cGUgIT0gMSB8fCBlbGVtZW50ID09IHdpbmRvdykg cmV0dXJuIGVsZW1lbnQ7CgogICAgdmFyIG1ldGhvZHMgPSBPYmplY3QuY2xvbmUo TWV0aG9kcyksCiAgICAgIHRhZ05hbWUgPSBlbGVtZW50LnRhZ05hbWUudG9VcHBl ckNhc2UoKSwgcHJvcGVydHksIHZhbHVlOwoKICAgIC8vIGV4dGVuZCBtZXRob2Rz IGZvciBzcGVjaWZpYyB0YWdzCiAgICBpZiAoQnlUYWdbdGFnTmFtZV0pIE9iamVj dC5leHRlbmQobWV0aG9kcywgQnlUYWdbdGFnTmFtZV0pOwoKICAgIGZvciAocHJv cGVydHkgaW4gbWV0aG9kcykgewogICAgICB2YWx1ZSA9IG1ldGhvZHNbcHJvcGVy dHldOwogICAgICBpZiAoT2JqZWN0LmlzRnVuY3Rpb24odmFsdWUpICYmICEocHJv cGVydHkgaW4gZWxlbWVudCkpCiAgICAgICAgZWxlbWVudFtwcm9wZXJ0eV0gPSB2 YWx1ZS5tZXRob2RpemUoKTsKICAgIH0KCiAgICBlbGVtZW50Ll9leHRlbmRlZEJ5 UHJvdG90eXBlID0gUHJvdG90eXBlLmVtcHR5RnVuY3Rpb247CiAgICByZXR1cm4g ZWxlbWVudDsKCiAgfSwgewogICAgcmVmcmVzaDogZnVuY3Rpb24oKSB7CiAgICAg IC8vIGV4dGVuZCBtZXRob2RzIGZvciBhbGwgdGFncyAoU2FmYXJpIGRvZXNuJ3Qg bmVlZCB0aGlzKQogICAgICBpZiAoIVByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMu RWxlbWVudEV4dGVuc2lvbnMpIHsKICAgICAgICBPYmplY3QuZXh0ZW5kKE1ldGhv ZHMsIEVsZW1lbnQuTWV0aG9kcyk7CiAgICAgICAgT2JqZWN0LmV4dGVuZChNZXRo b2RzLCBFbGVtZW50Lk1ldGhvZHMuU2ltdWxhdGVkKTsKICAgICAgfQogICAgfQog IH0pOwoKICBleHRlbmQucmVmcmVzaCgpOwogIHJldHVybiBleHRlbmQ7Cn0pKCk7 CgpFbGVtZW50Lmhhc0F0dHJpYnV0ZSA9IGZ1bmN0aW9uKGVsZW1lbnQsIGF0dHJp YnV0ZSkgewogIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSkgcmV0dXJuIGVsZW1l bnQuaGFzQXR0cmlidXRlKGF0dHJpYnV0ZSk7CiAgcmV0dXJuIEVsZW1lbnQuTWV0 aG9kcy5TaW11bGF0ZWQuaGFzQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZSk7 Cn07CgpFbGVtZW50LmFkZE1ldGhvZHMgPSBmdW5jdGlvbihtZXRob2RzKSB7CiAg dmFyIEYgPSBQcm90b3R5cGUuQnJvd3NlckZlYXR1cmVzLCBUID0gRWxlbWVudC5N ZXRob2RzLkJ5VGFnOwoKICBpZiAoIW1ldGhvZHMpIHsKICAgIE9iamVjdC5leHRl bmQoRm9ybSwgRm9ybS5NZXRob2RzKTsKICAgIE9iamVjdC5leHRlbmQoRm9ybS5F bGVtZW50LCBGb3JtLkVsZW1lbnQuTWV0aG9kcyk7CiAgICBPYmplY3QuZXh0ZW5k KEVsZW1lbnQuTWV0aG9kcy5CeVRhZywgewogICAgICAiRk9STSI6ICAgICBPYmpl Y3QuY2xvbmUoRm9ybS5NZXRob2RzKSwKICAgICAgIklOUFVUIjogICAgT2JqZWN0 LmNsb25lKEZvcm0uRWxlbWVudC5NZXRob2RzKSwKICAgICAgIlNFTEVDVCI6ICAg T2JqZWN0LmNsb25lKEZvcm0uRWxlbWVudC5NZXRob2RzKSwKICAgICAgIlRFWFRB UkVBIjogT2JqZWN0LmNsb25lKEZvcm0uRWxlbWVudC5NZXRob2RzKQogICAgfSk7 CiAgfQoKICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAyKSB7CiAgICB2YXIgdGFn TmFtZSA9IG1ldGhvZHM7CiAgICBtZXRob2RzID0gYXJndW1lbnRzWzFdOwogIH0K CiAgaWYgKCF0YWdOYW1lKSBPYmplY3QuZXh0ZW5kKEVsZW1lbnQuTWV0aG9kcywg bWV0aG9kcyB8fCB7IH0pOwogIGVsc2UgewogICAgaWYgKE9iamVjdC5pc0FycmF5 KHRhZ05hbWUpKSB0YWdOYW1lLmVhY2goZXh0ZW5kKTsKICAgIGVsc2UgZXh0ZW5k KHRhZ05hbWUpOwogIH0KCiAgZnVuY3Rpb24gZXh0ZW5kKHRhZ05hbWUpIHsKICAg IHRhZ05hbWUgPSB0YWdOYW1lLnRvVXBwZXJDYXNlKCk7CiAgICBpZiAoIUVsZW1l bnQuTWV0aG9kcy5CeVRhZ1t0YWdOYW1lXSkKICAgICAgRWxlbWVudC5NZXRob2Rz LkJ5VGFnW3RhZ05hbWVdID0geyB9OwogICAgT2JqZWN0LmV4dGVuZChFbGVtZW50 Lk1ldGhvZHMuQnlUYWdbdGFnTmFtZV0sIG1ldGhvZHMpOwogIH0KCiAgZnVuY3Rp b24gY29weShtZXRob2RzLCBkZXN0aW5hdGlvbiwgb25seUlmQWJzZW50KSB7CiAg ICBvbmx5SWZBYnNlbnQgPSBvbmx5SWZBYnNlbnQgfHwgZmFsc2U7CiAgICBmb3Ig KHZhciBwcm9wZXJ0eSBpbiBtZXRob2RzKSB7CiAgICAgIHZhciB2YWx1ZSA9IG1l dGhvZHNbcHJvcGVydHldOwogICAgICBpZiAoIU9iamVjdC5pc0Z1bmN0aW9uKHZh bHVlKSkgY29udGludWU7CiAgICAgIGlmICghb25seUlmQWJzZW50IHx8ICEocHJv cGVydHkgaW4gZGVzdGluYXRpb24pKQogICAgICAgIGRlc3RpbmF0aW9uW3Byb3Bl cnR5XSA9IHZhbHVlLm1ldGhvZGl6ZSgpOwogICAgfQogIH0KCiAgZnVuY3Rpb24g ZmluZERPTUNsYXNzKHRhZ05hbWUpIHsKICAgIHZhciBrbGFzczsKICAgIHZhciB0 cmFucyA9IHsKICAgICAgIk9QVEdST1VQIjogIk9wdEdyb3VwIiwgIlRFWFRBUkVB IjogIlRleHRBcmVhIiwgIlAiOiAiUGFyYWdyYXBoIiwKICAgICAgIkZJRUxEU0VU IjogIkZpZWxkU2V0IiwgIlVMIjogIlVMaXN0IiwgIk9MIjogIk9MaXN0IiwgIkRM IjogIkRMaXN0IiwKICAgICAgIkRJUiI6ICJEaXJlY3RvcnkiLCAiSDEiOiAiSGVh ZGluZyIsICJIMiI6ICJIZWFkaW5nIiwgIkgzIjogIkhlYWRpbmciLAogICAgICAi SDQiOiAiSGVhZGluZyIsICJINSI6ICJIZWFkaW5nIiwgIkg2IjogIkhlYWRpbmci LCAiUSI6ICJRdW90ZSIsCiAgICAgICJJTlMiOiAiTW9kIiwgIkRFTCI6ICJNb2Qi LCAiQSI6ICJBbmNob3IiLCAiSU1HIjogIkltYWdlIiwgIkNBUFRJT04iOgogICAg ICAiVGFibGVDYXB0aW9uIiwgIkNPTCI6ICJUYWJsZUNvbCIsICJDT0xHUk9VUCI6 ICJUYWJsZUNvbCIsICJUSEVBRCI6CiAgICAgICJUYWJsZVNlY3Rpb24iLCAiVEZP T1QiOiAiVGFibGVTZWN0aW9uIiwgIlRCT0RZIjogIlRhYmxlU2VjdGlvbiIsICJU UiI6CiAgICAgICJUYWJsZVJvdyIsICJUSCI6ICJUYWJsZUNlbGwiLCAiVEQiOiAi VGFibGVDZWxsIiwgIkZSQU1FU0VUIjoKICAgICAgIkZyYW1lU2V0IiwgIklGUkFN RSI6ICJJRnJhbWUiCiAgICB9OwogICAgaWYgKHRyYW5zW3RhZ05hbWVdKSBrbGFz cyA9ICdIVE1MJyArIHRyYW5zW3RhZ05hbWVdICsgJ0VsZW1lbnQnOwogICAgaWYg KHdpbmRvd1trbGFzc10pIHJldHVybiB3aW5kb3dba2xhc3NdOwogICAga2xhc3Mg PSAnSFRNTCcgKyB0YWdOYW1lICsgJ0VsZW1lbnQnOwogICAgaWYgKHdpbmRvd1tr bGFzc10pIHJldHVybiB3aW5kb3dba2xhc3NdOwogICAga2xhc3MgPSAnSFRNTCcg KyB0YWdOYW1lLmNhcGl0YWxpemUoKSArICdFbGVtZW50JzsKICAgIGlmICh3aW5k b3dba2xhc3NdKSByZXR1cm4gd2luZG93W2tsYXNzXTsKCiAgICB3aW5kb3dba2xh c3NdID0geyB9OwogICAgd2luZG93W2tsYXNzXS5wcm90b3R5cGUgPSBkb2N1bWVu dC5jcmVhdGVFbGVtZW50KHRhZ05hbWUpWydfX3Byb3RvX18nXTsKICAgIHJldHVy biB3aW5kb3dba2xhc3NdOwogIH0KCiAgaWYgKEYuRWxlbWVudEV4dGVuc2lvbnMp IHsKICAgIGNvcHkoRWxlbWVudC5NZXRob2RzLCBIVE1MRWxlbWVudC5wcm90b3R5 cGUpOwogICAgY29weShFbGVtZW50Lk1ldGhvZHMuU2ltdWxhdGVkLCBIVE1MRWxl bWVudC5wcm90b3R5cGUsIHRydWUpOwogIH0KCiAgaWYgKEYuU3BlY2lmaWNFbGVt ZW50RXh0ZW5zaW9ucykgewogICAgZm9yICh2YXIgdGFnIGluIEVsZW1lbnQuTWV0 aG9kcy5CeVRhZykgewogICAgICB2YXIga2xhc3MgPSBmaW5kRE9NQ2xhc3ModGFn KTsKICAgICAgaWYgKE9iamVjdC5pc1VuZGVmaW5lZChrbGFzcykpIGNvbnRpbnVl OwogICAgICBjb3B5KFRbdGFnXSwga2xhc3MucHJvdG90eXBlKTsKICAgIH0KICB9 CgogIE9iamVjdC5leHRlbmQoRWxlbWVudCwgRWxlbWVudC5NZXRob2RzKTsKICBk ZWxldGUgRWxlbWVudC5CeVRhZzsKCiAgaWYgKEVsZW1lbnQuZXh0ZW5kLnJlZnJl c2gpIEVsZW1lbnQuZXh0ZW5kLnJlZnJlc2goKTsKICBFbGVtZW50LmNhY2hlID0g eyB9Owp9OwoKZG9jdW1lbnQudmlld3BvcnQgPSB7CiAgZ2V0RGltZW5zaW9uczog ZnVuY3Rpb24oKSB7CiAgICB2YXIgZGltZW5zaW9ucyA9IHsgfSwgQiA9IFByb3Rv dHlwZS5Ccm93c2VyOwogICAgJHcoJ3dpZHRoIGhlaWdodCcpLmVhY2goZnVuY3Rp b24oZCkgewogICAgICB2YXIgRCA9IGQuY2FwaXRhbGl6ZSgpOwogICAgICBpZiAo Qi5XZWJLaXQgJiYgIWRvY3VtZW50LmV2YWx1YXRlKSB7CiAgICAgICAgLy8gU2Fm YXJpIDwzLjAgbmVlZHMgc2VsZi5pbm5lcldpZHRoL0hlaWdodAogICAgICAgIGRp bWVuc2lvbnNbZF0gPSBzZWxmWydpbm5lcicgKyBEXTsKICAgICAgfSBlbHNlIGlm IChCLk9wZXJhICYmIHBhcnNlRmxvYXQod2luZG93Lm9wZXJhLnZlcnNpb24oKSkg PCA5LjUpIHsKICAgICAgICAvLyBPcGVyYSA8OS41IG5lZWRzIGRvY3VtZW50LmJv ZHkuY2xpZW50V2lkdGgvSGVpZ2h0CiAgICAgICAgZGltZW5zaW9uc1tkXSA9IGRv Y3VtZW50LmJvZHlbJ2NsaWVudCcgKyBEXQogICAgICB9IGVsc2UgewogICAgICAg IGRpbWVuc2lvbnNbZF0gPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbJ2NsaWVu dCcgKyBEXTsKICAgICAgfQogICAgfSk7CiAgICByZXR1cm4gZGltZW5zaW9uczsK ICB9LAoKICBnZXRXaWR0aDogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5n ZXREaW1lbnNpb25zKCkud2lkdGg7CiAgfSwKCiAgZ2V0SGVpZ2h0OiBmdW5jdGlv bigpIHsKICAgIHJldHVybiB0aGlzLmdldERpbWVuc2lvbnMoKS5oZWlnaHQ7CiAg fSwKCiAgZ2V0U2Nyb2xsT2Zmc2V0czogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4g RWxlbWVudC5fcmV0dXJuT2Zmc2V0KAogICAgICB3aW5kb3cucGFnZVhPZmZzZXQg fHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQgfHwgZG9jdW1l bnQuYm9keS5zY3JvbGxMZWZ0LAogICAgICB3aW5kb3cucGFnZVlPZmZzZXQgfHwg ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8fCBkb2N1bWVudC5i b2R5LnNjcm9sbFRvcCk7CiAgfQp9OwovKiBQb3J0aW9ucyBvZiB0aGUgU2VsZWN0 b3IgY2xhc3MgYXJlIGRlcml2ZWQgZnJvbSBKYWNrIFNsb2N1bSdzIERvbVF1ZXJ5 LAogKiBwYXJ0IG9mIFlVSS1FeHQgdmVyc2lvbiAwLjQwLCBkaXN0cmlidXRlZCB1 bmRlciB0aGUgdGVybXMgb2YgYW4gTUlULXN0eWxlCiAqIGxpY2Vuc2UuICBQbGVh c2Ugc2VlIGh0dHA6Ly93d3cueXVpLWV4dC5jb20vIGZvciBtb3JlIGluZm9ybWF0 aW9uLiAqLwoKdmFyIFNlbGVjdG9yID0gQ2xhc3MuY3JlYXRlKHsKICBpbml0aWFs aXplOiBmdW5jdGlvbihleHByZXNzaW9uKSB7CiAgICB0aGlzLmV4cHJlc3Npb24g PSBleHByZXNzaW9uLnN0cmlwKCk7CgogICAgaWYgKHRoaXMuc2hvdWxkVXNlU2Vs ZWN0b3JzQVBJKCkpIHsKICAgICAgdGhpcy5tb2RlID0gJ3NlbGVjdG9yc0FQSSc7 CiAgICB9IGVsc2UgaWYgKHRoaXMuc2hvdWxkVXNlWFBhdGgoKSkgewogICAgICB0 aGlzLm1vZGUgPSAneHBhdGgnOwogICAgICB0aGlzLmNvbXBpbGVYUGF0aE1hdGNo ZXIoKTsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMubW9kZSA9ICJub3JtYWwiOwog ICAgICB0aGlzLmNvbXBpbGVNYXRjaGVyKCk7CiAgICB9CgogIH0sCgogIHNob3Vs ZFVzZVhQYXRoOiBmdW5jdGlvbigpIHsKICAgIGlmICghUHJvdG90eXBlLkJyb3dz ZXJGZWF0dXJlcy5YUGF0aCkgcmV0dXJuIGZhbHNlOwoKICAgIHZhciBlID0gdGhp cy5leHByZXNzaW9uOwoKICAgIC8vIFNhZmFyaSAzIGNob2tlcyBvbiA6Ki1vZi10 eXBlIGFuZCA6ZW1wdHkKICAgIGlmIChQcm90b3R5cGUuQnJvd3Nlci5XZWJLaXQg JiYKICAgICAoZS5pbmNsdWRlKCItb2YtdHlwZSIpIHx8IGUuaW5jbHVkZSgiOmVt cHR5IikpKQogICAgICByZXR1cm4gZmFsc2U7CgogICAgLy8gWFBhdGggY2FuJ3Qg ZG8gbmFtZXNwYWNlZCBhdHRyaWJ1dGVzLCBub3IgY2FuIGl0IHJlYWQKICAgIC8v IHRoZSAiY2hlY2tlZCIgcHJvcGVydHkgZnJvbSBET00gbm9kZXMKICAgIGlmICgo LyhcW1tcdy1dKj86fDpjaGVja2VkKS8pLnRlc3QoZSkpCiAgICAgIHJldHVybiBm YWxzZTsKCiAgICByZXR1cm4gdHJ1ZTsKICB9LAoKICBzaG91bGRVc2VTZWxlY3Rv cnNBUEk6IGZ1bmN0aW9uKCkgewogICAgaWYgKCFQcm90b3R5cGUuQnJvd3NlckZl YXR1cmVzLlNlbGVjdG9yc0FQSSkgcmV0dXJuIGZhbHNlOwoKICAgIGlmICghU2Vs ZWN0b3IuX2RpdikgU2VsZWN0b3IuX2RpdiA9IG5ldyBFbGVtZW50KCdkaXYnKTsK CiAgICAvLyBNYWtlIHN1cmUgdGhlIGJyb3dzZXIgdHJlYXRzIHRoZSBzZWxlY3Rv ciBhcyB2YWxpZC4gVGVzdCBvbiBhbgogICAgLy8gaXNvbGF0ZWQgZWxlbWVudCB0 byBtaW5pbWl6ZSBjb3N0IG9mIHRoaXMgY2hlY2suCiAgICB0cnkgewogICAgICBT ZWxlY3Rvci5fZGl2LnF1ZXJ5U2VsZWN0b3IodGhpcy5leHByZXNzaW9uKTsKICAg IH0gY2F0Y2goZSkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcmV0 dXJuIHRydWU7CiAgfSwKCiAgY29tcGlsZU1hdGNoZXI6IGZ1bmN0aW9uKCkgewog ICAgdmFyIGUgPSB0aGlzLmV4cHJlc3Npb24sIHBzID0gU2VsZWN0b3IucGF0dGVy bnMsIGggPSBTZWxlY3Rvci5oYW5kbGVycywKICAgICAgICBjID0gU2VsZWN0b3Iu Y3JpdGVyaWEsIGxlLCBwLCBtOwoKICAgIGlmIChTZWxlY3Rvci5fY2FjaGVbZV0p IHsKICAgICAgdGhpcy5tYXRjaGVyID0gU2VsZWN0b3IuX2NhY2hlW2VdOwogICAg ICByZXR1cm47CiAgICB9CgogICAgdGhpcy5tYXRjaGVyID0gWyJ0aGlzLm1hdGNo ZXIgPSBmdW5jdGlvbihyb290KSB7IiwKICAgICAgICAgICAgICAgICAgICAidmFy IHIgPSByb290LCBoID0gU2VsZWN0b3IuaGFuZGxlcnMsIGMgPSBmYWxzZSwgbjsi XTsKCiAgICB3aGlsZSAoZSAmJiBsZSAhPSBlICYmICgvXFMvKS50ZXN0KGUpKSB7 CiAgICAgIGxlID0gZTsKICAgICAgZm9yICh2YXIgaSBpbiBwcykgewogICAgICAg IHAgPSBwc1tpXTsKICAgICAgICBpZiAobSA9IGUubWF0Y2gocCkpIHsKICAgICAg ICAgIHRoaXMubWF0Y2hlci5wdXNoKE9iamVjdC5pc0Z1bmN0aW9uKGNbaV0pID8g Y1tpXShtKSA6CiAgICAgICAgICAgIG5ldyBUZW1wbGF0ZShjW2ldKS5ldmFsdWF0 ZShtKSk7CiAgICAgICAgICBlID0gZS5yZXBsYWNlKG1bMF0sICcnKTsKICAgICAg ICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHRoaXMubWF0 Y2hlci5wdXNoKCJyZXR1cm4gaC51bmlxdWUobik7XG59Iik7CiAgICBldmFsKHRo aXMubWF0Y2hlci5qb2luKCdcbicpKTsKICAgIFNlbGVjdG9yLl9jYWNoZVt0aGlz LmV4cHJlc3Npb25dID0gdGhpcy5tYXRjaGVyOwogIH0sCgogIGNvbXBpbGVYUGF0 aE1hdGNoZXI6IGZ1bmN0aW9uKCkgewogICAgdmFyIGUgPSB0aGlzLmV4cHJlc3Np b24sIHBzID0gU2VsZWN0b3IucGF0dGVybnMsCiAgICAgICAgeCA9IFNlbGVjdG9y LnhwYXRoLCBsZSwgbTsKCiAgICBpZiAoU2VsZWN0b3IuX2NhY2hlW2VdKSB7CiAg ICAgIHRoaXMueHBhdGggPSBTZWxlY3Rvci5fY2FjaGVbZV07IHJldHVybjsKICAg IH0KCiAgICB0aGlzLm1hdGNoZXIgPSBbJy4vLyonXTsKICAgIHdoaWxlIChlICYm IGxlICE9IGUgJiYgKC9cUy8pLnRlc3QoZSkpIHsKICAgICAgbGUgPSBlOwogICAg ICBmb3IgKHZhciBpIGluIHBzKSB7CiAgICAgICAgaWYgKG0gPSBlLm1hdGNoKHBz W2ldKSkgewogICAgICAgICAgdGhpcy5tYXRjaGVyLnB1c2goT2JqZWN0LmlzRnVu Y3Rpb24oeFtpXSkgPyB4W2ldKG0pIDoKICAgICAgICAgICAgbmV3IFRlbXBsYXRl KHhbaV0pLmV2YWx1YXRlKG0pKTsKICAgICAgICAgIGUgPSBlLnJlcGxhY2UobVsw XSwgJycpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICB9 CgogICAgdGhpcy54cGF0aCA9IHRoaXMubWF0Y2hlci5qb2luKCcnKTsKICAgIFNl bGVjdG9yLl9jYWNoZVt0aGlzLmV4cHJlc3Npb25dID0gdGhpcy54cGF0aDsKICB9 LAoKICBmaW5kRWxlbWVudHM6IGZ1bmN0aW9uKHJvb3QpIHsKICAgIHJvb3QgPSBy b290IHx8IGRvY3VtZW50OwogICAgdmFyIGUgPSB0aGlzLmV4cHJlc3Npb24sIHJl c3VsdHM7CgogICAgc3dpdGNoICh0aGlzLm1vZGUpIHsKICAgICAgY2FzZSAnc2Vs ZWN0b3JzQVBJJzoKICAgICAgICAvLyBxdWVyeVNlbGVjdG9yQWxsIHF1ZXJpZXMg ZG9jdW1lbnQtd2lkZSwgdGhlbiBmaWx0ZXJzIHRvIGRlc2NlbmRhbnRzCiAgICAg ICAgLy8gb2YgdGhlIGNvbnRleHQgZWxlbWVudC4gVGhhdCdzIG5vdCB3aGF0IHdl IHdhbnQuCiAgICAgICAgLy8gQWRkIGFuIGV4cGxpY2l0IGNvbnRleHQgdG8gdGhl IHNlbGVjdG9yIGlmIG5lY2Vzc2FyeS4KICAgICAgICBpZiAocm9vdCAhPT0gZG9j dW1lbnQpIHsKICAgICAgICAgIHZhciBvbGRJZCA9IHJvb3QuaWQsIGlkID0gJChy b290KS5pZGVudGlmeSgpOwogICAgICAgICAgZSA9ICIjIiArIGlkICsgIiAiICsg ZTsKICAgICAgICB9CgogICAgICAgIHJlc3VsdHMgPSAkQShyb290LnF1ZXJ5U2Vs ZWN0b3JBbGwoZSkpLm1hcChFbGVtZW50LmV4dGVuZCk7CiAgICAgICAgcm9vdC5p ZCA9IG9sZElkOwoKICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgY2FzZSAn eHBhdGgnOgogICAgICAgIHJldHVybiBkb2N1bWVudC5fZ2V0RWxlbWVudHNCeVhQ YXRoKHRoaXMueHBhdGgsIHJvb3QpOwogICAgICBkZWZhdWx0OgogICAgICAgcmV0 dXJuIHRoaXMubWF0Y2hlcihyb290KTsKICAgIH0KICB9LAoKICBtYXRjaDogZnVu Y3Rpb24oZWxlbWVudCkgewogICAgdGhpcy50b2tlbnMgPSBbXTsKCiAgICB2YXIg ZSA9IHRoaXMuZXhwcmVzc2lvbiwgcHMgPSBTZWxlY3Rvci5wYXR0ZXJucywgYXMg PSBTZWxlY3Rvci5hc3NlcnRpb25zOwogICAgdmFyIGxlLCBwLCBtOwoKICAgIHdo aWxlIChlICYmIGxlICE9PSBlICYmICgvXFMvKS50ZXN0KGUpKSB7CiAgICAgIGxl ID0gZTsKICAgICAgZm9yICh2YXIgaSBpbiBwcykgewogICAgICAgIHAgPSBwc1tp XTsKICAgICAgICBpZiAobSA9IGUubWF0Y2gocCkpIHsKICAgICAgICAgIC8vIHVz ZSB0aGUgU2VsZWN0b3IuYXNzZXJ0aW9ucyBtZXRob2RzIHVubGVzcyB0aGUgc2Vs ZWN0b3IKICAgICAgICAgIC8vIGlzIHRvbyBjb21wbGV4LgogICAgICAgICAgaWYg KGFzW2ldKSB7CiAgICAgICAgICAgIHRoaXMudG9rZW5zLnB1c2goW2ksIE9iamVj dC5jbG9uZShtKV0pOwogICAgICAgICAgICBlID0gZS5yZXBsYWNlKG1bMF0sICcn KTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIHJlbHVjdGFudGx5 IGRvIGEgZG9jdW1lbnQtd2lkZSBzZWFyY2gKICAgICAgICAgICAgLy8gYW5kIGxv b2sgZm9yIGEgbWF0Y2ggaW4gdGhlIGFycmF5CiAgICAgICAgICAgIHJldHVybiB0 aGlzLmZpbmRFbGVtZW50cyhkb2N1bWVudCkuaW5jbHVkZShlbGVtZW50KTsKICAg ICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICB2YXIgbWF0Y2gg PSB0cnVlLCBuYW1lLCBtYXRjaGVzOwogICAgZm9yICh2YXIgaSA9IDAsIHRva2Vu OyB0b2tlbiA9IHRoaXMudG9rZW5zW2ldOyBpKyspIHsKICAgICAgbmFtZSA9IHRv a2VuWzBdLCBtYXRjaGVzID0gdG9rZW5bMV07CiAgICAgIGlmICghU2VsZWN0b3Iu YXNzZXJ0aW9uc1tuYW1lXShlbGVtZW50LCBtYXRjaGVzKSkgewogICAgICAgIG1h dGNoID0gZmFsc2U7IGJyZWFrOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIG1h dGNoOwogIH0sCgogIHRvU3RyaW5nOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0 aGlzLmV4cHJlc3Npb247CiAgfSwKCiAgaW5zcGVjdDogZnVuY3Rpb24oKSB7CiAg ICByZXR1cm4gIiM8U2VsZWN0b3I6IiArIHRoaXMuZXhwcmVzc2lvbi5pbnNwZWN0 KCkgKyAiPiI7CiAgfQp9KTsKCk9iamVjdC5leHRlbmQoU2VsZWN0b3IsIHsKICBf Y2FjaGU6IHsgfSwKCiAgeHBhdGg6IHsKICAgIGRlc2NlbmRhbnQ6ICAgIi8vKiIs CiAgICBjaGlsZDogICAgICAgICIvKiIsCiAgICBhZGphY2VudDogICAgICIvZm9s bG93aW5nLXNpYmxpbmc6OipbMV0iLAogICAgbGF0ZXJTaWJsaW5nOiAnL2ZvbGxv d2luZy1zaWJsaW5nOjoqJywKICAgIHRhZ05hbWU6ICAgICAgZnVuY3Rpb24obSkg ewogICAgICBpZiAobVsxXSA9PSAnKicpIHJldHVybiAnJzsKICAgICAgcmV0dXJu ICJbbG9jYWwtbmFtZSgpPSciICsgbVsxXS50b0xvd2VyQ2FzZSgpICsKICAgICAg ICAgICAgICInIG9yIGxvY2FsLW5hbWUoKT0nIiArIG1bMV0udG9VcHBlckNhc2Uo KSArICInXSI7CiAgICB9LAogICAgY2xhc3NOYW1lOiAgICAiW2NvbnRhaW5zKGNv bmNhdCgnICcsIEBjbGFzcywgJyAnKSwgJyAjezF9ICcpXSIsCiAgICBpZDogICAg ICAgICAgICJbQGlkPScjezF9J10iLAogICAgYXR0clByZXNlbmNlOiBmdW5jdGlv bihtKSB7CiAgICAgIG1bMV0gPSBtWzFdLnRvTG93ZXJDYXNlKCk7CiAgICAgIHJl dHVybiBuZXcgVGVtcGxhdGUoIltAI3sxfV0iKS5ldmFsdWF0ZShtKTsKICAgIH0s CiAgICBhdHRyOiBmdW5jdGlvbihtKSB7CiAgICAgIG1bMV0gPSBtWzFdLnRvTG93 ZXJDYXNlKCk7CiAgICAgIG1bM10gPSBtWzVdIHx8IG1bNl07CiAgICAgIHJldHVy biBuZXcgVGVtcGxhdGUoU2VsZWN0b3IueHBhdGgub3BlcmF0b3JzW21bMl1dKS5l dmFsdWF0ZShtKTsKICAgIH0sCiAgICBwc2V1ZG86IGZ1bmN0aW9uKG0pIHsKICAg ICAgdmFyIGggPSBTZWxlY3Rvci54cGF0aC5wc2V1ZG9zW21bMV1dOwogICAgICBp ZiAoIWgpIHJldHVybiAnJzsKICAgICAgaWYgKE9iamVjdC5pc0Z1bmN0aW9uKGgp KSByZXR1cm4gaChtKTsKICAgICAgcmV0dXJuIG5ldyBUZW1wbGF0ZShTZWxlY3Rv ci54cGF0aC5wc2V1ZG9zW21bMV1dKS5ldmFsdWF0ZShtKTsKICAgIH0sCiAgICBv cGVyYXRvcnM6IHsKICAgICAgJz0nOiAgIltAI3sxfT0nI3szfSddIiwKICAgICAg JyE9JzogIltAI3sxfSE9JyN7M30nXSIsCiAgICAgICdePSc6ICJbc3RhcnRzLXdp dGgoQCN7MX0sICcjezN9JyldIiwKICAgICAgJyQ9JzogIltzdWJzdHJpbmcoQCN7 MX0sIChzdHJpbmctbGVuZ3RoKEAjezF9KSAtIHN0cmluZy1sZW5ndGgoJyN7M30n KSArIDEpKT0nI3szfSddIiwKICAgICAgJyo9JzogIltjb250YWlucyhAI3sxfSwg JyN7M30nKV0iLAogICAgICAnfj0nOiAiW2NvbnRhaW5zKGNvbmNhdCgnICcsIEAj ezF9LCAnICcpLCAnICN7M30gJyldIiwKICAgICAgJ3w9JzogIltjb250YWlucyhj b25jYXQoJy0nLCBAI3sxfSwgJy0nKSwgJy0jezN9LScpXSIKICAgIH0sCiAgICBw c2V1ZG9zOiB7CiAgICAgICdmaXJzdC1jaGlsZCc6ICdbbm90KHByZWNlZGluZy1z aWJsaW5nOjoqKV0nLAogICAgICAnbGFzdC1jaGlsZCc6ICAnW25vdChmb2xsb3dp bmctc2libGluZzo6KildJywKICAgICAgJ29ubHktY2hpbGQnOiAgJ1tub3QocHJl Y2VkaW5nLXNpYmxpbmc6Oiogb3IgZm9sbG93aW5nLXNpYmxpbmc6OiopXScsCiAg ICAgICdlbXB0eSc6ICAgICAgICJbY291bnQoKikgPSAwIGFuZCAoY291bnQodGV4 dCgpKSA9IDApXSIsCiAgICAgICdjaGVja2VkJzogICAgICJbQGNoZWNrZWRdIiwK ICAgICAgJ2Rpc2FibGVkJzogICAgIlsoQGRpc2FibGVkKSBhbmQgKEB0eXBlIT0n aGlkZGVuJyldIiwKICAgICAgJ2VuYWJsZWQnOiAgICAgIltub3QoQGRpc2FibGVk KSBhbmQgKEB0eXBlIT0naGlkZGVuJyldIiwKICAgICAgJ25vdCc6IGZ1bmN0aW9u KG0pIHsKICAgICAgICB2YXIgZSA9IG1bNl0sIHAgPSBTZWxlY3Rvci5wYXR0ZXJu cywKICAgICAgICAgICAgeCA9IFNlbGVjdG9yLnhwYXRoLCBsZSwgdjsKCiAgICAg ICAgdmFyIGV4Y2x1c2lvbiA9IFtdOwogICAgICAgIHdoaWxlIChlICYmIGxlICE9 IGUgJiYgKC9cUy8pLnRlc3QoZSkpIHsKICAgICAgICAgIGxlID0gZTsKICAgICAg ICAgIGZvciAodmFyIGkgaW4gcCkgewogICAgICAgICAgICBpZiAobSA9IGUubWF0 Y2gocFtpXSkpIHsKICAgICAgICAgICAgICB2ID0gT2JqZWN0LmlzRnVuY3Rpb24o eFtpXSkgPyB4W2ldKG0pIDogbmV3IFRlbXBsYXRlKHhbaV0pLmV2YWx1YXRlKG0p OwogICAgICAgICAgICAgIGV4Y2x1c2lvbi5wdXNoKCIoIiArIHYuc3Vic3RyaW5n KDEsIHYubGVuZ3RoIC0gMSkgKyAiKSIpOwogICAgICAgICAgICAgIGUgPSBlLnJl cGxhY2UobVswXSwgJycpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg ICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAiW25vdCgi ICsgZXhjbHVzaW9uLmpvaW4oIiBhbmQgIikgKyAiKV0iOwogICAgICB9LAogICAg ICAnbnRoLWNoaWxkJzogICAgICBmdW5jdGlvbihtKSB7CiAgICAgICAgcmV0dXJu IFNlbGVjdG9yLnhwYXRoLnBzZXVkb3MubnRoKCIoY291bnQoLi9wcmVjZWRpbmct c2libGluZzo6KikgKyAxKSAiLCBtKTsKICAgICAgfSwKICAgICAgJ250aC1sYXN0 LWNoaWxkJzogZnVuY3Rpb24obSkgewogICAgICAgIHJldHVybiBTZWxlY3Rvci54 cGF0aC5wc2V1ZG9zLm50aCgiKGNvdW50KC4vZm9sbG93aW5nLXNpYmxpbmc6Oiop ICsgMSkgIiwgbSk7CiAgICAgIH0sCiAgICAgICdudGgtb2YtdHlwZSc6ICAgIGZ1 bmN0aW9uKG0pIHsKICAgICAgICByZXR1cm4gU2VsZWN0b3IueHBhdGgucHNldWRv cy5udGgoInBvc2l0aW9uKCkgIiwgbSk7CiAgICAgIH0sCiAgICAgICdudGgtbGFz dC1vZi10eXBlJzogZnVuY3Rpb24obSkgewogICAgICAgIHJldHVybiBTZWxlY3Rv ci54cGF0aC5wc2V1ZG9zLm50aCgiKGxhc3QoKSArIDEgLSBwb3NpdGlvbigpKSAi LCBtKTsKICAgICAgfSwKICAgICAgJ2ZpcnN0LW9mLXR5cGUnOiAgZnVuY3Rpb24o bSkgewogICAgICAgIG1bNl0gPSAiMSI7IHJldHVybiBTZWxlY3Rvci54cGF0aC5w c2V1ZG9zWydudGgtb2YtdHlwZSddKG0pOwogICAgICB9LAogICAgICAnbGFzdC1v Zi10eXBlJzogICBmdW5jdGlvbihtKSB7CiAgICAgICAgbVs2XSA9ICIxIjsgcmV0 dXJuIFNlbGVjdG9yLnhwYXRoLnBzZXVkb3NbJ250aC1sYXN0LW9mLXR5cGUnXSht KTsKICAgICAgfSwKICAgICAgJ29ubHktb2YtdHlwZSc6ICAgZnVuY3Rpb24obSkg ewogICAgICAgIHZhciBwID0gU2VsZWN0b3IueHBhdGgucHNldWRvczsgcmV0dXJu IHBbJ2ZpcnN0LW9mLXR5cGUnXShtKSArIHBbJ2xhc3Qtb2YtdHlwZSddKG0pOwog ICAgICB9LAogICAgICBudGg6IGZ1bmN0aW9uKGZyYWdtZW50LCBtKSB7CiAgICAg ICAgdmFyIG1tLCBmb3JtdWxhID0gbVs2XSwgcHJlZGljYXRlOwogICAgICAgIGlm IChmb3JtdWxhID09ICdldmVuJykgZm9ybXVsYSA9ICcybiswJzsKICAgICAgICBp ZiAoZm9ybXVsYSA9PSAnb2RkJykgIGZvcm11bGEgPSAnMm4rMSc7CiAgICAgICAg aWYgKG1tID0gZm9ybXVsYS5tYXRjaCgvXihcZCspJC8pKSAvLyBkaWdpdCBvbmx5 CiAgICAgICAgICByZXR1cm4gJ1snICsgZnJhZ21lbnQgKyAiPSAiICsgbW1bMV0g KyAnXSc7CiAgICAgICAgaWYgKG1tID0gZm9ybXVsYS5tYXRjaCgvXigtP1xkKik/ bigoWystXSkoXGQrKSk/LykpIHsgLy8gYW4rYgogICAgICAgICAgaWYgKG1tWzFd ID09ICItIikgbW1bMV0gPSAtMTsKICAgICAgICAgIHZhciBhID0gbW1bMV0gPyBO dW1iZXIobW1bMV0pIDogMTsKICAgICAgICAgIHZhciBiID0gbW1bMl0gPyBOdW1i ZXIobW1bMl0pIDogMDsKICAgICAgICAgIHByZWRpY2F0ZSA9ICJbKCgje2ZyYWdt ZW50fSAtICN7Yn0pIG1vZCAje2F9ID0gMCkgYW5kICIgKwogICAgICAgICAgIigo I3tmcmFnbWVudH0gLSAje2J9KSBkaXYgI3thfSA+PSAwKV0iOwogICAgICAgICAg cmV0dXJuIG5ldyBUZW1wbGF0ZShwcmVkaWNhdGUpLmV2YWx1YXRlKHsKICAgICAg ICAgICAgZnJhZ21lbnQ6IGZyYWdtZW50LCBhOiBhLCBiOiBiIH0pOwogICAgICAg IH0KICAgICAgfQogICAgfQogIH0sCgogIGNyaXRlcmlhOiB7CiAgICB0YWdOYW1l OiAgICAgICduID0gaC50YWdOYW1lKG4sIHIsICIjezF9IiwgYyk7ICAgICAgYyA9 IGZhbHNlOycsCiAgICBjbGFzc05hbWU6ICAgICduID0gaC5jbGFzc05hbWUobiwg ciwgIiN7MX0iLCBjKTsgICAgYyA9IGZhbHNlOycsCiAgICBpZDogICAgICAgICAg ICduID0gaC5pZChuLCByLCAiI3sxfSIsIGMpOyAgICAgICAgICAgYyA9IGZhbHNl OycsCiAgICBhdHRyUHJlc2VuY2U6ICduID0gaC5hdHRyUHJlc2VuY2Uobiwgciwg IiN7MX0iLCBjKTsgYyA9IGZhbHNlOycsCiAgICBhdHRyOiBmdW5jdGlvbihtKSB7 CiAgICAgIG1bM10gPSAobVs1XSB8fCBtWzZdKTsKICAgICAgcmV0dXJuIG5ldyBU ZW1wbGF0ZSgnbiA9IGguYXR0cihuLCByLCAiI3sxfSIsICIjezN9IiwgIiN7Mn0i LCBjKTsgYyA9IGZhbHNlOycpLmV2YWx1YXRlKG0pOwogICAgfSwKICAgIHBzZXVk bzogZnVuY3Rpb24obSkgewogICAgICBpZiAobVs2XSkgbVs2XSA9IG1bNl0ucmVw bGFjZSgvIi9nLCAnXFwiJyk7CiAgICAgIHJldHVybiBuZXcgVGVtcGxhdGUoJ24g PSBoLnBzZXVkbyhuLCAiI3sxfSIsICIjezZ9IiwgciwgYyk7IGMgPSBmYWxzZTsn KS5ldmFsdWF0ZShtKTsKICAgIH0sCiAgICBkZXNjZW5kYW50OiAgICdjID0gImRl c2NlbmRhbnQiOycsCiAgICBjaGlsZDogICAgICAgICdjID0gImNoaWxkIjsnLAog ICAgYWRqYWNlbnQ6ICAgICAnYyA9ICJhZGphY2VudCI7JywKICAgIGxhdGVyU2li bGluZzogJ2MgPSAibGF0ZXJTaWJsaW5nIjsnCiAgfSwKCiAgcGF0dGVybnM6IHsK ICAgIC8vIGNvbWJpbmF0b3JzIG11c3QgYmUgbGlzdGVkIGZpcnN0CiAgICAvLyAo YW5kIGRlc2NlbmRhbnQgbmVlZHMgdG8gYmUgbGFzdCBjb21iaW5hdG9yKQogICAg bGF0ZXJTaWJsaW5nOiAvXlxzKn5ccyovLAogICAgY2hpbGQ6ICAgICAgICAvXlxz Kj5ccyovLAogICAgYWRqYWNlbnQ6ICAgICAvXlxzKlwrXHMqLywKICAgIGRlc2Nl bmRhbnQ6ICAgL15ccy8sCgogICAgLy8gc2VsZWN0b3JzIGZvbGxvdwogICAgdGFn TmFtZTogICAgICAvXlxzKihcKnxbXHdcLV0rKShcYnwkKT8vLAogICAgaWQ6ICAg ICAgICAgICAvXiMoW1x3XC1cKl0rKShcYnwkKS8sCiAgICBjbGFzc05hbWU6ICAg IC9eXC4oW1x3XC1cKl0rKShcYnwkKS8sCiAgICBwc2V1ZG86Ci9eOigoZmlyc3R8 bGFzdHxudGh8bnRoLWxhc3R8b25seSkoLWNoaWxkfC1vZi10eXBlKXxlbXB0eXxj aGVja2VkfChlbnxkaXMpYWJsZWR8bm90KShcKCguKj8pXCkpPyhcYnwkfCg/PVxz fFs6K34+XSkpLywKICAgIGF0dHJQcmVzZW5jZTogL15cWygoPzpbXHddKzopP1tc d10rKVxdLywKICAgIGF0dHI6ICAgICAgICAgL1xbKCg/Oltcdy1dKjopP1tcdy1d KylccyooPzooWyFeJCp+fF0/PSlccyooKFsnIl0pKFteXDRdKj8pXDR8KFteJyJd W15cXV0qPykpKT9cXS8KICB9LAoKICAvLyBmb3IgU2VsZWN0b3IubWF0Y2ggYW5k IEVsZW1lbnQjbWF0Y2gKICBhc3NlcnRpb25zOiB7CiAgICB0YWdOYW1lOiBmdW5j dGlvbihlbGVtZW50LCBtYXRjaGVzKSB7CiAgICAgIHJldHVybiBtYXRjaGVzWzFd LnRvVXBwZXJDYXNlKCkgPT0gZWxlbWVudC50YWdOYW1lLnRvVXBwZXJDYXNlKCk7 CiAgICB9LAoKICAgIGNsYXNzTmFtZTogZnVuY3Rpb24oZWxlbWVudCwgbWF0Y2hl cykgewogICAgICByZXR1cm4gRWxlbWVudC5oYXNDbGFzc05hbWUoZWxlbWVudCwg bWF0Y2hlc1sxXSk7CiAgICB9LAoKICAgIGlkOiBmdW5jdGlvbihlbGVtZW50LCBt YXRjaGVzKSB7CiAgICAgIHJldHVybiBlbGVtZW50LmlkID09PSBtYXRjaGVzWzFd OwogICAgfSwKCiAgICBhdHRyUHJlc2VuY2U6IGZ1bmN0aW9uKGVsZW1lbnQsIG1h dGNoZXMpIHsKICAgICAgcmV0dXJuIEVsZW1lbnQuaGFzQXR0cmlidXRlKGVsZW1l bnQsIG1hdGNoZXNbMV0pOwogICAgfSwKCiAgICBhdHRyOiBmdW5jdGlvbihlbGVt ZW50LCBtYXRjaGVzKSB7CiAgICAgIHZhciBub2RlVmFsdWUgPSBFbGVtZW50LnJl YWRBdHRyaWJ1dGUoZWxlbWVudCwgbWF0Y2hlc1sxXSk7CiAgICAgIHJldHVybiBu b2RlVmFsdWUgJiYgU2VsZWN0b3Iub3BlcmF0b3JzW21hdGNoZXNbMl1dKG5vZGVW YWx1ZSwgbWF0Y2hlc1s1XSB8fCBtYXRjaGVzWzZdKTsKICAgIH0KICB9LAoKICBo YW5kbGVyczogewogICAgLy8gVVRJTElUWSBGVU5DVElPTlMKICAgIC8vIGpvaW5z IHR3byBjb2xsZWN0aW9ucwogICAgY29uY2F0OiBmdW5jdGlvbihhLCBiKSB7CiAg ICAgIGZvciAodmFyIGkgPSAwLCBub2RlOyBub2RlID0gYltpXTsgaSsrKQogICAg ICAgIGEucHVzaChub2RlKTsKICAgICAgcmV0dXJuIGE7CiAgICB9LAoKICAgIC8v IG1hcmtzIGFuIGFycmF5IG9mIG5vZGVzIGZvciBjb3VudGluZwogICAgbWFyazog ZnVuY3Rpb24obm9kZXMpIHsKICAgICAgdmFyIF90cnVlID0gUHJvdG90eXBlLmVt cHR5RnVuY3Rpb247CiAgICAgIGZvciAodmFyIGkgPSAwLCBub2RlOyBub2RlID0g bm9kZXNbaV07IGkrKykKICAgICAgICBub2RlLl9jb3VudGVkQnlQcm90b3R5cGUg PSBfdHJ1ZTsKICAgICAgcmV0dXJuIG5vZGVzOwogICAgfSwKCiAgICB1bm1hcms6 IGZ1bmN0aW9uKG5vZGVzKSB7CiAgICAgIGZvciAodmFyIGkgPSAwLCBub2RlOyBu b2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICBub2RlLl9jb3VudGVkQnlQcm90 b3R5cGUgPSB1bmRlZmluZWQ7CiAgICAgIHJldHVybiBub2RlczsKICAgIH0sCgog ICAgLy8gbWFyayBlYWNoIGNoaWxkIG5vZGUgd2l0aCBpdHMgcG9zaXRpb24gKGZv ciBudGggY2FsbHMpCiAgICAvLyAib2ZUeXBlIiBmbGFnIGluZGljYXRlcyB3aGV0 aGVyIHdlJ3JlIGluZGV4aW5nIGZvciBudGgtb2YtdHlwZQogICAgLy8gcmF0aGVy IHRoYW4gbnRoLWNoaWxkCiAgICBpbmRleDogZnVuY3Rpb24ocGFyZW50Tm9kZSwg cmV2ZXJzZSwgb2ZUeXBlKSB7CiAgICAgIHBhcmVudE5vZGUuX2NvdW50ZWRCeVBy b3RvdHlwZSA9IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uOwogICAgICBpZiAocmV2 ZXJzZSkgewogICAgICAgIGZvciAodmFyIG5vZGVzID0gcGFyZW50Tm9kZS5jaGls ZE5vZGVzLCBpID0gbm9kZXMubGVuZ3RoIC0gMSwgaiA9IDE7IGkgPj0gMDsgaS0t KSB7CiAgICAgICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldOwogICAgICAgICAgaWYg KG5vZGUubm9kZVR5cGUgPT0gMSAmJiAoIW9mVHlwZSB8fCBub2RlLl9jb3VudGVk QnlQcm90b3R5cGUpKSBub2RlLm5vZGVJbmRleCA9IGorKzsKICAgICAgICB9CiAg ICAgIH0gZWxzZSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGogPSAxLCBub2Rl cyA9IHBhcmVudE5vZGUuY2hpbGROb2Rlczsgbm9kZSA9IG5vZGVzW2ldOyBpKysp CiAgICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PSAxICYmICghb2ZUeXBlIHx8 IG5vZGUuX2NvdW50ZWRCeVByb3RvdHlwZSkpIG5vZGUubm9kZUluZGV4ID0gaisr OwogICAgICB9CiAgICB9LAoKICAgIC8vIGZpbHRlcnMgb3V0IGR1cGxpY2F0ZXMg YW5kIGV4dGVuZHMgYWxsIG5vZGVzCiAgICB1bmlxdWU6IGZ1bmN0aW9uKG5vZGVz KSB7CiAgICAgIGlmIChub2Rlcy5sZW5ndGggPT0gMCkgcmV0dXJuIG5vZGVzOwog ICAgICB2YXIgcmVzdWx0cyA9IFtdLCBuOwogICAgICBmb3IgKHZhciBpID0gMCwg bCA9IG5vZGVzLmxlbmd0aDsgaSA8IGw7IGkrKykKICAgICAgICBpZiAoIShuID0g bm9kZXNbaV0pLl9jb3VudGVkQnlQcm90b3R5cGUpIHsKICAgICAgICAgIG4uX2Nv dW50ZWRCeVByb3RvdHlwZSA9IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uOwogICAg ICAgICAgcmVzdWx0cy5wdXNoKEVsZW1lbnQuZXh0ZW5kKG4pKTsKICAgICAgICB9 CiAgICAgIHJldHVybiBTZWxlY3Rvci5oYW5kbGVycy51bm1hcmsocmVzdWx0cyk7 CiAgICB9LAoKICAgIC8vIENPTUJJTkFUT1IgRlVOQ1RJT05TCiAgICBkZXNjZW5k YW50OiBmdW5jdGlvbihub2RlcykgewogICAgICB2YXIgaCA9IFNlbGVjdG9yLmhh bmRsZXJzOwogICAgICBmb3IgKHZhciBpID0gMCwgcmVzdWx0cyA9IFtdLCBub2Rl OyBub2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICBoLmNvbmNhdChyZXN1bHRz LCBub2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCcqJykpOwogICAgICByZXR1cm4g cmVzdWx0czsKICAgIH0sCgogICAgY2hpbGQ6IGZ1bmN0aW9uKG5vZGVzKSB7CiAg ICAgIHZhciBoID0gU2VsZWN0b3IuaGFuZGxlcnM7CiAgICAgIGZvciAodmFyIGkg PSAwLCByZXN1bHRzID0gW10sIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKSB7 CiAgICAgICAgZm9yICh2YXIgaiA9IDAsIGNoaWxkOyBjaGlsZCA9IG5vZGUuY2hp bGROb2Rlc1tqXTsgaisrKQogICAgICAgICAgaWYgKGNoaWxkLm5vZGVUeXBlID09 IDEgJiYgY2hpbGQudGFnTmFtZSAhPSAnIScpIHJlc3VsdHMucHVzaChjaGlsZCk7 CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9LAoKICAgIGFkamFj ZW50OiBmdW5jdGlvbihub2RlcykgewogICAgICBmb3IgKHZhciBpID0gMCwgcmVz dWx0cyA9IFtdLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykgewogICAgICAg IHZhciBuZXh0ID0gdGhpcy5uZXh0RWxlbWVudFNpYmxpbmcobm9kZSk7CiAgICAg ICAgaWYgKG5leHQpIHJlc3VsdHMucHVzaChuZXh0KTsKICAgICAgfQogICAgICBy ZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgbGF0ZXJTaWJsaW5nOiBmdW5jdGlv bihub2RlcykgewogICAgICB2YXIgaCA9IFNlbGVjdG9yLmhhbmRsZXJzOwogICAg ICBmb3IgKHZhciBpID0gMCwgcmVzdWx0cyA9IFtdLCBub2RlOyBub2RlID0gbm9k ZXNbaV07IGkrKykKICAgICAgICBoLmNvbmNhdChyZXN1bHRzLCBFbGVtZW50Lm5l eHRTaWJsaW5ncyhub2RlKSk7CiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfSwK CiAgICBuZXh0RWxlbWVudFNpYmxpbmc6IGZ1bmN0aW9uKG5vZGUpIHsKICAgICAg d2hpbGUgKG5vZGUgPSBub2RlLm5leHRTaWJsaW5nKQogICAgICAgIGlmIChub2Rl Lm5vZGVUeXBlID09IDEpIHJldHVybiBub2RlOwogICAgICByZXR1cm4gbnVsbDsK ICAgIH0sCgogICAgcHJldmlvdXNFbGVtZW50U2libGluZzogZnVuY3Rpb24obm9k ZSkgewogICAgICB3aGlsZSAobm9kZSA9IG5vZGUucHJldmlvdXNTaWJsaW5nKQog ICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDEpIHJldHVybiBub2RlOwogICAg ICByZXR1cm4gbnVsbDsKICAgIH0sCgogICAgLy8gVE9LRU4gRlVOQ1RJT05TCiAg ICB0YWdOYW1lOiBmdW5jdGlvbihub2Rlcywgcm9vdCwgdGFnTmFtZSwgY29tYmlu YXRvcikgewogICAgICB2YXIgdVRhZ05hbWUgPSB0YWdOYW1lLnRvVXBwZXJDYXNl KCk7CiAgICAgIHZhciByZXN1bHRzID0gW10sIGggPSBTZWxlY3Rvci5oYW5kbGVy czsKICAgICAgaWYgKG5vZGVzKSB7CiAgICAgICAgaWYgKGNvbWJpbmF0b3IpIHsK ICAgICAgICAgIC8vIGZhc3RsYW5lIGZvciBvcmRpbmFyeSBkZXNjZW5kYW50IGNv bWJpbmF0b3JzCiAgICAgICAgICBpZiAoY29tYmluYXRvciA9PSAiZGVzY2VuZGFu dCIpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBu b2Rlc1tpXTsgaSsrKQogICAgICAgICAgICAgIGguY29uY2F0KHJlc3VsdHMsIG5v ZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnTmFtZSkpOwogICAgICAgICAgICBy ZXR1cm4gcmVzdWx0czsKICAgICAgICAgIH0gZWxzZSBub2RlcyA9IHRoaXNbY29t YmluYXRvcl0obm9kZXMpOwogICAgICAgICAgaWYgKHRhZ05hbWUgPT0gIioiKSBy ZXR1cm4gbm9kZXM7CiAgICAgICAgfQogICAgICAgIGZvciAodmFyIGkgPSAwLCBu b2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICAgIGlmIChub2RlLnRh Z05hbWUudG9VcHBlckNhc2UoKSA9PT0gdVRhZ05hbWUpIHJlc3VsdHMucHVzaChu b2RlKTsKICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgfSBlbHNlIHJldHVy biByb290LmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ05hbWUpOwogICAgfSwKCiAg ICBpZDogZnVuY3Rpb24obm9kZXMsIHJvb3QsIGlkLCBjb21iaW5hdG9yKSB7CiAg ICAgIHZhciB0YXJnZXROb2RlID0gJChpZCksIGggPSBTZWxlY3Rvci5oYW5kbGVy czsKICAgICAgaWYgKCF0YXJnZXROb2RlKSByZXR1cm4gW107CiAgICAgIGlmICgh bm9kZXMgJiYgcm9vdCA9PSBkb2N1bWVudCkgcmV0dXJuIFt0YXJnZXROb2RlXTsK ICAgICAgaWYgKG5vZGVzKSB7CiAgICAgICAgaWYgKGNvbWJpbmF0b3IpIHsKICAg ICAgICAgIGlmIChjb21iaW5hdG9yID09ICdjaGlsZCcpIHsKICAgICAgICAgICAg Zm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAg ICAgICAgICAgIGlmICh0YXJnZXROb2RlLnBhcmVudE5vZGUgPT0gbm9kZSkgcmV0 dXJuIFt0YXJnZXROb2RlXTsKICAgICAgICAgIH0gZWxzZSBpZiAoY29tYmluYXRv ciA9PSAnZGVzY2VuZGFudCcpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAs IG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgICAgICAgIGlmIChF bGVtZW50LmRlc2NlbmRhbnRPZih0YXJnZXROb2RlLCBub2RlKSkgcmV0dXJuIFt0 YXJnZXROb2RlXTsKICAgICAgICAgIH0gZWxzZSBpZiAoY29tYmluYXRvciA9PSAn YWRqYWNlbnQnKSB7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBub2RlOyBu b2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICAgICAgICBpZiAoU2VsZWN0b3Iu aGFuZGxlcnMucHJldmlvdXNFbGVtZW50U2libGluZyh0YXJnZXROb2RlKSA9PSBu b2RlKQogICAgICAgICAgICAgICAgcmV0dXJuIFt0YXJnZXROb2RlXTsKICAgICAg ICAgIH0gZWxzZSBub2RlcyA9IGhbY29tYmluYXRvcl0obm9kZXMpOwogICAgICAg IH0KICAgICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ld OyBpKyspCiAgICAgICAgICBpZiAobm9kZSA9PSB0YXJnZXROb2RlKSByZXR1cm4g W3RhcmdldE5vZGVdOwogICAgICAgIHJldHVybiBbXTsKICAgICAgfQogICAgICBy ZXR1cm4gKHRhcmdldE5vZGUgJiYgRWxlbWVudC5kZXNjZW5kYW50T2YodGFyZ2V0 Tm9kZSwgcm9vdCkpID8gW3RhcmdldE5vZGVdIDogW107CiAgICB9LAoKICAgIGNs YXNzTmFtZTogZnVuY3Rpb24obm9kZXMsIHJvb3QsIGNsYXNzTmFtZSwgY29tYmlu YXRvcikgewogICAgICBpZiAobm9kZXMgJiYgY29tYmluYXRvcikgbm9kZXMgPSB0 aGlzW2NvbWJpbmF0b3JdKG5vZGVzKTsKICAgICAgcmV0dXJuIFNlbGVjdG9yLmhh bmRsZXJzLmJ5Q2xhc3NOYW1lKG5vZGVzLCByb290LCBjbGFzc05hbWUpOwogICAg fSwKCiAgICBieUNsYXNzTmFtZTogZnVuY3Rpb24obm9kZXMsIHJvb3QsIGNsYXNz TmFtZSkgewogICAgICBpZiAoIW5vZGVzKSBub2RlcyA9IFNlbGVjdG9yLmhhbmRs ZXJzLmRlc2NlbmRhbnQoW3Jvb3RdKTsKICAgICAgdmFyIG5lZWRsZSA9ICcgJyAr IGNsYXNzTmFtZSArICcgJzsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMg PSBbXSwgbm9kZSwgbm9kZUNsYXNzTmFtZTsgbm9kZSA9IG5vZGVzW2ldOyBpKysp IHsKICAgICAgICBub2RlQ2xhc3NOYW1lID0gbm9kZS5jbGFzc05hbWU7CiAgICAg ICAgaWYgKG5vZGVDbGFzc05hbWUubGVuZ3RoID09IDApIGNvbnRpbnVlOwogICAg ICAgIGlmIChub2RlQ2xhc3NOYW1lID09IGNsYXNzTmFtZSB8fCAoJyAnICsgbm9k ZUNsYXNzTmFtZSArICcgJykuaW5jbHVkZShuZWVkbGUpKQogICAgICAgICAgcmVz dWx0cy5wdXNoKG5vZGUpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHRzOwog ICAgfSwKCiAgICBhdHRyUHJlc2VuY2U6IGZ1bmN0aW9uKG5vZGVzLCByb290LCBh dHRyLCBjb21iaW5hdG9yKSB7CiAgICAgIGlmICghbm9kZXMpIG5vZGVzID0gcm9v dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOwogICAgICBpZiAobm9kZXMgJiYg Y29tYmluYXRvcikgbm9kZXMgPSB0aGlzW2NvbWJpbmF0b3JdKG5vZGVzKTsKICAg ICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7 IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgIGlmIChFbGVtZW50Lmhhc0F0 dHJpYnV0ZShub2RlLCBhdHRyKSkgcmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICBy ZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgYXR0cjogZnVuY3Rpb24obm9kZXMs IHJvb3QsIGF0dHIsIHZhbHVlLCBvcGVyYXRvciwgY29tYmluYXRvcikgewogICAg ICBpZiAoIW5vZGVzKSBub2RlcyA9IHJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUo IioiKTsKICAgICAgaWYgKG5vZGVzICYmIGNvbWJpbmF0b3IpIG5vZGVzID0gdGhp c1tjb21iaW5hdG9yXShub2Rlcyk7CiAgICAgIHZhciBoYW5kbGVyID0gU2VsZWN0 b3Iub3BlcmF0b3JzW29wZXJhdG9yXSwgcmVzdWx0cyA9IFtdOwogICAgICBmb3Ig KHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAg ICB2YXIgbm9kZVZhbHVlID0gRWxlbWVudC5yZWFkQXR0cmlidXRlKG5vZGUsIGF0 dHIpOwogICAgICAgIGlmIChub2RlVmFsdWUgPT09IG51bGwpIGNvbnRpbnVlOwog ICAgICAgIGlmIChoYW5kbGVyKG5vZGVWYWx1ZSwgdmFsdWUpKSByZXN1bHRzLnB1 c2gobm9kZSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9LAoK ICAgIHBzZXVkbzogZnVuY3Rpb24obm9kZXMsIG5hbWUsIHZhbHVlLCByb290LCBj b21iaW5hdG9yKSB7CiAgICAgIGlmIChub2RlcyAmJiBjb21iaW5hdG9yKSBub2Rl cyA9IHRoaXNbY29tYmluYXRvcl0obm9kZXMpOwogICAgICBpZiAoIW5vZGVzKSBu b2RlcyA9IHJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKTsKICAgICAgcmV0 dXJuIFNlbGVjdG9yLnBzZXVkb3NbbmFtZV0obm9kZXMsIHZhbHVlLCByb290KTsK ICAgIH0KICB9LAoKICBwc2V1ZG9zOiB7CiAgICAnZmlyc3QtY2hpbGQnOiBmdW5j dGlvbihub2RlcywgdmFsdWUsIHJvb3QpIHsKICAgICAgZm9yICh2YXIgaSA9IDAs IHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAg ICAgICBpZiAoU2VsZWN0b3IuaGFuZGxlcnMucHJldmlvdXNFbGVtZW50U2libGlu Zyhub2RlKSkgY29udGludWU7CiAgICAgICAgICByZXN1bHRzLnB1c2gobm9kZSk7 CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9LAogICAgJ2xhc3Qt Y2hpbGQnOiBmdW5jdGlvbihub2RlcywgdmFsdWUsIHJvb3QpIHsKICAgICAgZm9y ICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ld OyBpKyspIHsKICAgICAgICBpZiAoU2VsZWN0b3IuaGFuZGxlcnMubmV4dEVsZW1l bnRTaWJsaW5nKG5vZGUpKSBjb250aW51ZTsKICAgICAgICAgIHJlc3VsdHMucHVz aChub2RlKTsKICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCiAg ICAnb25seS1jaGlsZCc6IGZ1bmN0aW9uKG5vZGVzLCB2YWx1ZSwgcm9vdCkgewog ICAgICB2YXIgaCA9IFNlbGVjdG9yLmhhbmRsZXJzOwogICAgICBmb3IgKHZhciBp ID0gMCwgcmVzdWx0cyA9IFtdLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykK ICAgICAgICBpZiAoIWgucHJldmlvdXNFbGVtZW50U2libGluZyhub2RlKSAmJiAh aC5uZXh0RWxlbWVudFNpYmxpbmcobm9kZSkpCiAgICAgICAgICByZXN1bHRzLnB1 c2gobm9kZSk7CiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfSwKICAgICdudGgt Y2hpbGQnOiAgICAgICAgZnVuY3Rpb24obm9kZXMsIGZvcm11bGEsIHJvb3QpIHsK ICAgICAgcmV0dXJuIFNlbGVjdG9yLnBzZXVkb3MubnRoKG5vZGVzLCBmb3JtdWxh LCByb290KTsKICAgIH0sCiAgICAnbnRoLWxhc3QtY2hpbGQnOiAgIGZ1bmN0aW9u KG5vZGVzLCBmb3JtdWxhLCByb290KSB7CiAgICAgIHJldHVybiBTZWxlY3Rvci5w c2V1ZG9zLm50aChub2RlcywgZm9ybXVsYSwgcm9vdCwgdHJ1ZSk7CiAgICB9LAog ICAgJ250aC1vZi10eXBlJzogICAgICBmdW5jdGlvbihub2RlcywgZm9ybXVsYSwg cm9vdCkgewogICAgICByZXR1cm4gU2VsZWN0b3IucHNldWRvcy5udGgobm9kZXMs IGZvcm11bGEsIHJvb3QsIGZhbHNlLCB0cnVlKTsKICAgIH0sCiAgICAnbnRoLWxh c3Qtb2YtdHlwZSc6IGZ1bmN0aW9uKG5vZGVzLCBmb3JtdWxhLCByb290KSB7CiAg ICAgIHJldHVybiBTZWxlY3Rvci5wc2V1ZG9zLm50aChub2RlcywgZm9ybXVsYSwg cm9vdCwgdHJ1ZSwgdHJ1ZSk7CiAgICB9LAogICAgJ2ZpcnN0LW9mLXR5cGUnOiAg ICBmdW5jdGlvbihub2RlcywgZm9ybXVsYSwgcm9vdCkgewogICAgICByZXR1cm4g U2VsZWN0b3IucHNldWRvcy5udGgobm9kZXMsICIxIiwgcm9vdCwgZmFsc2UsIHRy dWUpOwogICAgfSwKICAgICdsYXN0LW9mLXR5cGUnOiAgICAgZnVuY3Rpb24obm9k ZXMsIGZvcm11bGEsIHJvb3QpIHsKICAgICAgcmV0dXJuIFNlbGVjdG9yLnBzZXVk b3MubnRoKG5vZGVzLCAiMSIsIHJvb3QsIHRydWUsIHRydWUpOwogICAgfSwKICAg ICdvbmx5LW9mLXR5cGUnOiAgICAgZnVuY3Rpb24obm9kZXMsIGZvcm11bGEsIHJv b3QpIHsKICAgICAgdmFyIHAgPSBTZWxlY3Rvci5wc2V1ZG9zOwogICAgICByZXR1 cm4gcFsnbGFzdC1vZi10eXBlJ10ocFsnZmlyc3Qtb2YtdHlwZSddKG5vZGVzLCBm b3JtdWxhLCByb290KSwgZm9ybXVsYSwgcm9vdCk7CiAgICB9LAoKICAgIC8vIGhh bmRsZXMgdGhlIGFuK2IgbG9naWMKICAgIGdldEluZGljZXM6IGZ1bmN0aW9uKGEs IGIsIHRvdGFsKSB7CiAgICAgIGlmIChhID09IDApIHJldHVybiBiID4gMCA/IFti XSA6IFtdOwogICAgICByZXR1cm4gJFIoMSwgdG90YWwpLmluamVjdChbXSwgZnVu Y3Rpb24obWVtbywgaSkgewogICAgICAgIGlmICgwID09IChpIC0gYikgJSBhICYm IChpIC0gYikgLyBhID49IDApIG1lbW8ucHVzaChpKTsKICAgICAgICByZXR1cm4g bWVtbzsKICAgICAgfSk7CiAgICB9LAoKICAgIC8vIGhhbmRsZXMgbnRoKC1sYXN0 KS1jaGlsZCwgbnRoKC1sYXN0KS1vZi10eXBlLCBhbmQgKGZpcnN0fGxhc3QpLW9m LXR5cGUKICAgIG50aDogZnVuY3Rpb24obm9kZXMsIGZvcm11bGEsIHJvb3QsIHJl dmVyc2UsIG9mVHlwZSkgewogICAgICBpZiAobm9kZXMubGVuZ3RoID09IDApIHJl dHVybiBbXTsKICAgICAgaWYgKGZvcm11bGEgPT0gJ2V2ZW4nKSBmb3JtdWxhID0g JzJuKzAnOwogICAgICBpZiAoZm9ybXVsYSA9PSAnb2RkJykgIGZvcm11bGEgPSAn Mm4rMSc7CiAgICAgIHZhciBoID0gU2VsZWN0b3IuaGFuZGxlcnMsIHJlc3VsdHMg PSBbXSwgaW5kZXhlZCA9IFtdLCBtOwogICAgICBoLm1hcmsobm9kZXMpOwogICAg ICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsK ICAgICAgICBpZiAoIW5vZGUucGFyZW50Tm9kZS5fY291bnRlZEJ5UHJvdG90eXBl KSB7CiAgICAgICAgICBoLmluZGV4KG5vZGUucGFyZW50Tm9kZSwgcmV2ZXJzZSwg b2ZUeXBlKTsKICAgICAgICAgIGluZGV4ZWQucHVzaChub2RlLnBhcmVudE5vZGUp OwogICAgICAgIH0KICAgICAgfQogICAgICBpZiAoZm9ybXVsYS5tYXRjaCgvXlxk KyQvKSkgeyAvLyBqdXN0IGEgbnVtYmVyCiAgICAgICAgZm9ybXVsYSA9IE51bWJl cihmb3JtdWxhKTsKICAgICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9 IG5vZGVzW2ldOyBpKyspCiAgICAgICAgICBpZiAobm9kZS5ub2RlSW5kZXggPT0g Zm9ybXVsYSkgcmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICB9IGVsc2UgaWYgKG0g PSBmb3JtdWxhLm1hdGNoKC9eKC0/XGQqKT9uKChbKy1dKShcZCspKT8vKSkgeyAv LyBhbitiCiAgICAgICAgaWYgKG1bMV0gPT0gIi0iKSBtWzFdID0gLTE7CiAgICAg ICAgdmFyIGEgPSBtWzFdID8gTnVtYmVyKG1bMV0pIDogMTsKICAgICAgICB2YXIg YiA9IG1bMl0gPyBOdW1iZXIobVsyXSkgOiAwOwogICAgICAgIHZhciBpbmRpY2Vz ID0gU2VsZWN0b3IucHNldWRvcy5nZXRJbmRpY2VzKGEsIGIsIG5vZGVzLmxlbmd0 aCk7CiAgICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGUsIGwgPSBpbmRpY2VzLmxl bmd0aDsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAgICAgIGZvciAodmFy IGogPSAwOyBqIDwgbDsgaisrKQogICAgICAgICAgICBpZiAobm9kZS5ub2RlSW5k ZXggPT0gaW5kaWNlc1tqXSkgcmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICAgIH0K ICAgICAgfQogICAgICBoLnVubWFyayhub2Rlcyk7CiAgICAgIGgudW5tYXJrKGlu ZGV4ZWQpOwogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgJ2VtcHR5 JzogZnVuY3Rpb24obm9kZXMsIHZhbHVlLCByb290KSB7CiAgICAgIGZvciAodmFy IGkgPSAwLCByZXN1bHRzID0gW10sIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsr KSB7CiAgICAgICAgLy8gSUUgdHJlYXRzIGNvbW1lbnRzIGFzIGVsZW1lbnQgbm9k ZXMKICAgICAgICBpZiAobm9kZS50YWdOYW1lID09ICchJyB8fCBub2RlLmZpcnN0 Q2hpbGQpIGNvbnRpbnVlOwogICAgICAgIHJlc3VsdHMucHVzaChub2RlKTsKICAg ICAgfQogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgJ25vdCc6IGZ1 bmN0aW9uKG5vZGVzLCBzZWxlY3Rvciwgcm9vdCkgewogICAgICB2YXIgaCA9IFNl bGVjdG9yLmhhbmRsZXJzLCBzZWxlY3RvclR5cGUsIG07CiAgICAgIHZhciBleGNs dXNpb25zID0gbmV3IFNlbGVjdG9yKHNlbGVjdG9yKS5maW5kRWxlbWVudHMocm9v dCk7CiAgICAgIGgubWFyayhleGNsdXNpb25zKTsKICAgICAgZm9yICh2YXIgaSA9 IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAg ICAgICAgaWYgKCFub2RlLl9jb3VudGVkQnlQcm90b3R5cGUpIHJlc3VsdHMucHVz aChub2RlKTsKICAgICAgaC51bm1hcmsoZXhjbHVzaW9ucyk7CiAgICAgIHJldHVy biByZXN1bHRzOwogICAgfSwKCiAgICAnZW5hYmxlZCc6IGZ1bmN0aW9uKG5vZGVz LCB2YWx1ZSwgcm9vdCkgewogICAgICBmb3IgKHZhciBpID0gMCwgcmVzdWx0cyA9 IFtdLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICBpZiAoIW5v ZGUuZGlzYWJsZWQgJiYgKCFub2RlLnR5cGUgfHwgbm9kZS50eXBlICE9PSAnaGlk ZGVuJykpCiAgICAgICAgICByZXN1bHRzLnB1c2gobm9kZSk7CiAgICAgIHJldHVy biByZXN1bHRzOwogICAgfSwKCiAgICAnZGlzYWJsZWQnOiBmdW5jdGlvbihub2Rl cywgdmFsdWUsIHJvb3QpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMg PSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAgaWYgKG5v ZGUuZGlzYWJsZWQpIHJlc3VsdHMucHVzaChub2RlKTsKICAgICAgcmV0dXJuIHJl c3VsdHM7CiAgICB9LAoKICAgICdjaGVja2VkJzogZnVuY3Rpb24obm9kZXMsIHZh bHVlLCByb290KSB7CiAgICAgIGZvciAodmFyIGkgPSAwLCByZXN1bHRzID0gW10s IG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgIGlmIChub2RlLmNo ZWNrZWQpIHJlc3VsdHMucHVzaChub2RlKTsKICAgICAgcmV0dXJuIHJlc3VsdHM7 CiAgICB9CiAgfSwKCiAgb3BlcmF0b3JzOiB7CiAgICAnPSc6ICBmdW5jdGlvbihu diwgdikgeyByZXR1cm4gbnYgPT0gdjsgfSwKICAgICchPSc6IGZ1bmN0aW9uKG52 LCB2KSB7IHJldHVybiBudiAhPSB2OyB9LAogICAgJ149JzogZnVuY3Rpb24obnYs IHYpIHsgcmV0dXJuIG52ID09IHYgfHwgbnYgJiYgbnYuc3RhcnRzV2l0aCh2KTsg fSwKICAgICckPSc6IGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiBudiA9PSB2IHx8 IG52ICYmIG52LmVuZHNXaXRoKHYpOyB9LAogICAgJyo9JzogZnVuY3Rpb24obnYs IHYpIHsgcmV0dXJuIG52ID09IHYgfHwgbnYgJiYgbnYuaW5jbHVkZSh2KTsgfSwK ICAgICckPSc6IGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiBudi5lbmRzV2l0aCh2 KTsgfSwKICAgICcqPSc6IGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiBudi5pbmNs dWRlKHYpOyB9LAogICAgJ349JzogZnVuY3Rpb24obnYsIHYpIHsgcmV0dXJuICgn ICcgKyBudiArICcgJykuaW5jbHVkZSgnICcgKyB2ICsgJyAnKTsgfSwKICAgICd8 PSc6IGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiAoJy0nICsgKG52IHx8ICIiKS50 b1VwcGVyQ2FzZSgpICsKICAgICAnLScpLmluY2x1ZGUoJy0nICsgKHYgfHwgIiIp LnRvVXBwZXJDYXNlKCkgKyAnLScpOyB9CiAgfSwKCiAgc3BsaXQ6IGZ1bmN0aW9u KGV4cHJlc3Npb24pIHsKICAgIHZhciBleHByZXNzaW9ucyA9IFtdOwogICAgZXhw cmVzc2lvbi5zY2FuKC8oKFtcdyM6Ln4+KygpXHMtXSt8XCp8XFsuKj9cXSkrKVxz KigsfCQpLywgZnVuY3Rpb24obSkgewogICAgICBleHByZXNzaW9ucy5wdXNoKG1b MV0uc3RyaXAoKSk7CiAgICB9KTsKICAgIHJldHVybiBleHByZXNzaW9uczsKICB9 LAoKICBtYXRjaEVsZW1lbnRzOiBmdW5jdGlvbihlbGVtZW50cywgZXhwcmVzc2lv bikgewogICAgdmFyIG1hdGNoZXMgPSAkJChleHByZXNzaW9uKSwgaCA9IFNlbGVj dG9yLmhhbmRsZXJzOwogICAgaC5tYXJrKG1hdGNoZXMpOwogICAgZm9yICh2YXIg aSA9IDAsIHJlc3VsdHMgPSBbXSwgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnRz W2ldOyBpKyspCiAgICAgIGlmIChlbGVtZW50Ll9jb3VudGVkQnlQcm90b3R5cGUp IHJlc3VsdHMucHVzaChlbGVtZW50KTsKICAgIGgudW5tYXJrKG1hdGNoZXMpOwog ICAgcmV0dXJuIHJlc3VsdHM7CiAgfSwKCiAgZmluZEVsZW1lbnQ6IGZ1bmN0aW9u KGVsZW1lbnRzLCBleHByZXNzaW9uLCBpbmRleCkgewogICAgaWYgKE9iamVjdC5p c051bWJlcihleHByZXNzaW9uKSkgewogICAgICBpbmRleCA9IGV4cHJlc3Npb247 IGV4cHJlc3Npb24gPSBmYWxzZTsKICAgIH0KICAgIHJldHVybiBTZWxlY3Rvci5t YXRjaEVsZW1lbnRzKGVsZW1lbnRzLCBleHByZXNzaW9uIHx8ICcqJylbaW5kZXgg fHwgMF07CiAgfSwKCiAgZmluZENoaWxkRWxlbWVudHM6IGZ1bmN0aW9uKGVsZW1l bnQsIGV4cHJlc3Npb25zKSB7CiAgICBleHByZXNzaW9ucyA9IFNlbGVjdG9yLnNw bGl0KGV4cHJlc3Npb25zLmpvaW4oJywnKSk7CiAgICB2YXIgcmVzdWx0cyA9IFtd LCBoID0gU2VsZWN0b3IuaGFuZGxlcnM7CiAgICBmb3IgKHZhciBpID0gMCwgbCA9 IGV4cHJlc3Npb25zLmxlbmd0aCwgc2VsZWN0b3I7IGkgPCBsOyBpKyspIHsKICAg ICAgc2VsZWN0b3IgPSBuZXcgU2VsZWN0b3IoZXhwcmVzc2lvbnNbaV0uc3RyaXAo KSk7CiAgICAgIGguY29uY2F0KHJlc3VsdHMsIHNlbGVjdG9yLmZpbmRFbGVtZW50 cyhlbGVtZW50KSk7CiAgICB9CiAgICByZXR1cm4gKGwgPiAxKSA/IGgudW5pcXVl KHJlc3VsdHMpIDogcmVzdWx0czsKICB9Cn0pOwoKaWYgKFByb3RvdHlwZS5Ccm93 c2VyLklFKSB7CiAgT2JqZWN0LmV4dGVuZChTZWxlY3Rvci5oYW5kbGVycywgewog ICAgLy8gSUUgcmV0dXJucyBjb21tZW50IG5vZGVzIG9uIGdldEVsZW1lbnRzQnlU YWdOYW1lKCIqIikuCiAgICAvLyBGaWx0ZXIgdGhlbSBvdXQuCiAgICBjb25jYXQ6 IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5v ZGUgPSBiW2ldOyBpKyspCiAgICAgICAgaWYgKG5vZGUudGFnTmFtZSAhPT0gIiEi KSBhLnB1c2gobm9kZSk7CiAgICAgIHJldHVybiBhOwogICAgfSwKCiAgICAvLyBJ RSBpbXByb3Blcmx5IHNlcmlhbGl6ZXMgX2NvdW50ZWRCeVByb3RvdHlwZSBpbiAo aW5uZXJ8b3V0ZXIpSFRNTC4KICAgIHVubWFyazogZnVuY3Rpb24obm9kZXMpIHsK ICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsr KQogICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKCdfY291bnRlZEJ5UHJvdG90 eXBlJyk7CiAgICAgIHJldHVybiBub2RlczsKICAgIH0KICB9KTsKfQoKZnVuY3Rp b24gJCQoKSB7CiAgcmV0dXJuIFNlbGVjdG9yLmZpbmRDaGlsZEVsZW1lbnRzKGRv Y3VtZW50LCAkQShhcmd1bWVudHMpKTsKfQp2YXIgRm9ybSA9IHsKICByZXNldDog ZnVuY3Rpb24oZm9ybSkgewogICAgJChmb3JtKS5yZXNldCgpOwogICAgcmV0dXJu IGZvcm07CiAgfSwKCiAgc2VyaWFsaXplRWxlbWVudHM6IGZ1bmN0aW9uKGVsZW1l bnRzLCBvcHRpb25zKSB7CiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT0gJ29iamVj dCcpIG9wdGlvbnMgPSB7IGhhc2g6ICEhb3B0aW9ucyB9OwogICAgZWxzZSBpZiAo T2JqZWN0LmlzVW5kZWZpbmVkKG9wdGlvbnMuaGFzaCkpIG9wdGlvbnMuaGFzaCA9 IHRydWU7CiAgICB2YXIga2V5LCB2YWx1ZSwgc3VibWl0dGVkID0gZmFsc2UsIHN1 Ym1pdCA9IG9wdGlvbnMuc3VibWl0OwoKICAgIHZhciBkYXRhID0gZWxlbWVudHMu aW5qZWN0KHsgfSwgZnVuY3Rpb24ocmVzdWx0LCBlbGVtZW50KSB7CiAgICAgIGlm ICghZWxlbWVudC5kaXNhYmxlZCAmJiBlbGVtZW50Lm5hbWUpIHsKICAgICAgICBr ZXkgPSBlbGVtZW50Lm5hbWU7IHZhbHVlID0gJChlbGVtZW50KS5nZXRWYWx1ZSgp OwogICAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIGVsZW1lbnQudHlwZSAhPSAn ZmlsZScgJiYgKGVsZW1lbnQudHlwZSAhPSAnc3VibWl0JyB8fCAoIXN1Ym1pdHRl ZCAmJgogICAgICAgICAgICBzdWJtaXQgIT09IGZhbHNlICYmICghc3VibWl0IHx8 IGtleSA9PSBzdWJtaXQpICYmIChzdWJtaXR0ZWQgPSB0cnVlKSkpKSB7CiAgICAg ICAgICBpZiAoa2V5IGluIHJlc3VsdCkgewogICAgICAgICAgICAvLyBhIGtleSBp cyBhbHJlYWR5IHByZXNlbnQ7IGNvbnN0cnVjdCBhbiBhcnJheSBvZiB2YWx1ZXMK ICAgICAgICAgICAgaWYgKCFPYmplY3QuaXNBcnJheShyZXN1bHRba2V5XSkpIHJl c3VsdFtrZXldID0gW3Jlc3VsdFtrZXldXTsKICAgICAgICAgICAgcmVzdWx0W2tl eV0ucHVzaCh2YWx1ZSk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHJlc3Vs dFtrZXldID0gdmFsdWU7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBy ZXN1bHQ7CiAgICB9KTsKCiAgICByZXR1cm4gb3B0aW9ucy5oYXNoID8gZGF0YSA6 IE9iamVjdC50b1F1ZXJ5U3RyaW5nKGRhdGEpOwogIH0KfTsKCkZvcm0uTWV0aG9k cyA9IHsKICBzZXJpYWxpemU6IGZ1bmN0aW9uKGZvcm0sIG9wdGlvbnMpIHsKICAg IHJldHVybiBGb3JtLnNlcmlhbGl6ZUVsZW1lbnRzKEZvcm0uZ2V0RWxlbWVudHMo Zm9ybSksIG9wdGlvbnMpOwogIH0sCgogIGdldEVsZW1lbnRzOiBmdW5jdGlvbihm b3JtKSB7CiAgICByZXR1cm4gJEEoJChmb3JtKS5nZXRFbGVtZW50c0J5VGFnTmFt ZSgnKicpKS5pbmplY3QoW10sCiAgICAgIGZ1bmN0aW9uKGVsZW1lbnRzLCBjaGls ZCkgewogICAgICAgIGlmIChGb3JtLkVsZW1lbnQuU2VyaWFsaXplcnNbY2hpbGQu dGFnTmFtZS50b0xvd2VyQ2FzZSgpXSkKICAgICAgICAgIGVsZW1lbnRzLnB1c2go RWxlbWVudC5leHRlbmQoY2hpbGQpKTsKICAgICAgICByZXR1cm4gZWxlbWVudHM7 CiAgICAgIH0KICAgICk7CiAgfSwKCiAgZ2V0SW5wdXRzOiBmdW5jdGlvbihmb3Jt LCB0eXBlTmFtZSwgbmFtZSkgewogICAgZm9ybSA9ICQoZm9ybSk7CiAgICB2YXIg aW5wdXRzID0gZm9ybS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKTsKCiAg ICBpZiAoIXR5cGVOYW1lICYmICFuYW1lKSByZXR1cm4gJEEoaW5wdXRzKS5tYXAo RWxlbWVudC5leHRlbmQpOwoKICAgIGZvciAodmFyIGkgPSAwLCBtYXRjaGluZ0lu cHV0cyA9IFtdLCBsZW5ndGggPSBpbnB1dHMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBp KyspIHsKICAgICAgdmFyIGlucHV0ID0gaW5wdXRzW2ldOwogICAgICBpZiAoKHR5 cGVOYW1lICYmIGlucHV0LnR5cGUgIT0gdHlwZU5hbWUpIHx8IChuYW1lICYmIGlu cHV0Lm5hbWUgIT0gbmFtZSkpCiAgICAgICAgY29udGludWU7CiAgICAgIG1hdGNo aW5nSW5wdXRzLnB1c2goRWxlbWVudC5leHRlbmQoaW5wdXQpKTsKICAgIH0KCiAg ICByZXR1cm4gbWF0Y2hpbmdJbnB1dHM7CiAgfSwKCiAgZGlzYWJsZTogZnVuY3Rp b24oZm9ybSkgewogICAgZm9ybSA9ICQoZm9ybSk7CiAgICBGb3JtLmdldEVsZW1l bnRzKGZvcm0pLmludm9rZSgnZGlzYWJsZScpOwogICAgcmV0dXJuIGZvcm07CiAg fSwKCiAgZW5hYmxlOiBmdW5jdGlvbihmb3JtKSB7CiAgICBmb3JtID0gJChmb3Jt KTsKICAgIEZvcm0uZ2V0RWxlbWVudHMoZm9ybSkuaW52b2tlKCdlbmFibGUnKTsK ICAgIHJldHVybiBmb3JtOwogIH0sCgogIGZpbmRGaXJzdEVsZW1lbnQ6IGZ1bmN0 aW9uKGZvcm0pIHsKICAgIHZhciBlbGVtZW50cyA9ICQoZm9ybSkuZ2V0RWxlbWVu dHMoKS5maW5kQWxsKGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAgcmV0dXJuICdo aWRkZW4nICE9IGVsZW1lbnQudHlwZSAmJiAhZWxlbWVudC5kaXNhYmxlZDsKICAg IH0pOwogICAgdmFyIGZpcnN0QnlJbmRleCA9IGVsZW1lbnRzLmZpbmRBbGwoZnVu Y3Rpb24oZWxlbWVudCkgewogICAgICByZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1 dGUoJ3RhYkluZGV4JykgJiYgZWxlbWVudC50YWJJbmRleCA+PSAwOwogICAgfSku c29ydEJ5KGZ1bmN0aW9uKGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQudGFiSW5k ZXggfSkuZmlyc3QoKTsKCiAgICByZXR1cm4gZmlyc3RCeUluZGV4ID8gZmlyc3RC eUluZGV4IDogZWxlbWVudHMuZmluZChmdW5jdGlvbihlbGVtZW50KSB7CiAgICAg IHJldHVybiBbJ2lucHV0JywgJ3NlbGVjdCcsICd0ZXh0YXJlYSddLmluY2x1ZGUo ZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkpOwogICAgfSk7CiAgfSwKCiAg Zm9jdXNGaXJzdEVsZW1lbnQ6IGZ1bmN0aW9uKGZvcm0pIHsKICAgIGZvcm0gPSAk KGZvcm0pOwogICAgZm9ybS5maW5kRmlyc3RFbGVtZW50KCkuYWN0aXZhdGUoKTsK ICAgIHJldHVybiBmb3JtOwogIH0sCgogIHJlcXVlc3Q6IGZ1bmN0aW9uKGZvcm0s IG9wdGlvbnMpIHsKICAgIGZvcm0gPSAkKGZvcm0pLCBvcHRpb25zID0gT2JqZWN0 LmNsb25lKG9wdGlvbnMgfHwgeyB9KTsKCiAgICB2YXIgcGFyYW1zID0gb3B0aW9u cy5wYXJhbWV0ZXJzLCBhY3Rpb24gPSBmb3JtLnJlYWRBdHRyaWJ1dGUoJ2FjdGlv bicpIHx8ICcnOwogICAgaWYgKGFjdGlvbi5ibGFuaygpKSBhY3Rpb24gPSB3aW5k b3cubG9jYXRpb24uaHJlZjsKICAgIG9wdGlvbnMucGFyYW1ldGVycyA9IGZvcm0u c2VyaWFsaXplKHRydWUpOwoKICAgIGlmIChwYXJhbXMpIHsKICAgICAgaWYgKE9i amVjdC5pc1N0cmluZyhwYXJhbXMpKSBwYXJhbXMgPSBwYXJhbXMudG9RdWVyeVBh cmFtcygpOwogICAgICBPYmplY3QuZXh0ZW5kKG9wdGlvbnMucGFyYW1ldGVycywg cGFyYW1zKTsKICAgIH0KCiAgICBpZiAoZm9ybS5oYXNBdHRyaWJ1dGUoJ21ldGhv ZCcpICYmICFvcHRpb25zLm1ldGhvZCkKICAgICAgb3B0aW9ucy5tZXRob2QgPSBm b3JtLm1ldGhvZDsKCiAgICByZXR1cm4gbmV3IEFqYXguUmVxdWVzdChhY3Rpb24s IG9wdGlvbnMpOwogIH0KfTsKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0q LwoKRm9ybS5FbGVtZW50ID0gewogIGZvY3VzOiBmdW5jdGlvbihlbGVtZW50KSB7 CiAgICAkKGVsZW1lbnQpLmZvY3VzKCk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9 LAoKICBzZWxlY3Q6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICQoZWxlbWVudCku c2VsZWN0KCk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9Cn07CgpGb3JtLkVsZW1l bnQuTWV0aG9kcyA9IHsKICBzZXJpYWxpemU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsK ICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKCFlbGVtZW50LmRpc2Fi bGVkICYmIGVsZW1lbnQubmFtZSkgewogICAgICB2YXIgdmFsdWUgPSBlbGVtZW50 LmdldFZhbHVlKCk7CiAgICAgIGlmICh2YWx1ZSAhPSB1bmRlZmluZWQpIHsKICAg ICAgICB2YXIgcGFpciA9IHsgfTsKICAgICAgICBwYWlyW2VsZW1lbnQubmFtZV0g PSB2YWx1ZTsKICAgICAgICByZXR1cm4gT2JqZWN0LnRvUXVlcnlTdHJpbmcocGFp cik7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiAnJzsKICB9LAoKICBnZXRWYWx1 ZTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7 CiAgICB2YXIgbWV0aG9kID0gZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7 CiAgICByZXR1cm4gRm9ybS5FbGVtZW50LlNlcmlhbGl6ZXJzW21ldGhvZF0oZWxl bWVudCk7CiAgfSwKCiAgc2V0VmFsdWU6IGZ1bmN0aW9uKGVsZW1lbnQsIHZhbHVl KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHZhciBtZXRob2QgPSBl bGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKTsKICAgIEZvcm0uRWxlbWVudC5T ZXJpYWxpemVyc1ttZXRob2RdKGVsZW1lbnQsIHZhbHVlKTsKICAgIHJldHVybiBl bGVtZW50OwogIH0sCgogIGNsZWFyOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAk KGVsZW1lbnQpLnZhbHVlID0gJyc7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoK ICBwcmVzZW50OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4gJChlbGVt ZW50KS52YWx1ZSAhPSAnJzsKICB9LAoKICBhY3RpdmF0ZTogZnVuY3Rpb24oZWxl bWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICB0cnkgewogICAg ICBlbGVtZW50LmZvY3VzKCk7CiAgICAgIGlmIChlbGVtZW50LnNlbGVjdCAmJiAo ZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT0gJ2lucHV0JyB8fAogICAg ICAgICAgIVsnYnV0dG9uJywgJ3Jlc2V0JywgJ3N1Ym1pdCddLmluY2x1ZGUoZWxl bWVudC50eXBlKSkpCiAgICAgICAgZWxlbWVudC5zZWxlY3QoKTsKICAgIH0gY2F0 Y2ggKGUpIHsgfQogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgZGlzYWJsZTog ZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAg ICBlbGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKICAgIHJldHVybiBlbGVtZW50Owog IH0sCgogIGVuYWJsZTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9 ICQoZWxlbWVudCk7CiAgICBlbGVtZW50LmRpc2FibGVkID0gZmFsc2U7CiAgICBy ZXR1cm4gZWxlbWVudDsKICB9Cn07CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKi8KCnZhciBGaWVsZCA9IEZvcm0uRWxlbWVudDsKdmFyICRGID0gRm9ybS5F bGVtZW50Lk1ldGhvZHMuZ2V0VmFsdWU7CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKi8KCkZvcm0uRWxlbWVudC5TZXJpYWxpemVycyA9IHsKICBpbnB1dDog ZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUpIHsKICAgIHN3aXRjaCAoZWxlbWVudC50 eXBlLnRvTG93ZXJDYXNlKCkpIHsKICAgICAgY2FzZSAnY2hlY2tib3gnOgogICAg ICBjYXNlICdyYWRpbyc6CiAgICAgICAgcmV0dXJuIEZvcm0uRWxlbWVudC5TZXJp YWxpemVycy5pbnB1dFNlbGVjdG9yKGVsZW1lbnQsIHZhbHVlKTsKICAgICAgZGVm YXVsdDoKICAgICAgICByZXR1cm4gRm9ybS5FbGVtZW50LlNlcmlhbGl6ZXJzLnRl eHRhcmVhKGVsZW1lbnQsIHZhbHVlKTsKICAgIH0KICB9LAoKICBpbnB1dFNlbGVj dG9yOiBmdW5jdGlvbihlbGVtZW50LCB2YWx1ZSkgewogICAgaWYgKE9iamVjdC5p c1VuZGVmaW5lZCh2YWx1ZSkpIHJldHVybiBlbGVtZW50LmNoZWNrZWQgPyBlbGVt ZW50LnZhbHVlIDogbnVsbDsKICAgIGVsc2UgZWxlbWVudC5jaGVja2VkID0gISF2 YWx1ZTsKICB9LAoKICB0ZXh0YXJlYTogZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUp IHsKICAgIGlmIChPYmplY3QuaXNVbmRlZmluZWQodmFsdWUpKSByZXR1cm4gZWxl bWVudC52YWx1ZTsKICAgIGVsc2UgZWxlbWVudC52YWx1ZSA9IHZhbHVlOwogIH0s CgogIHNlbGVjdDogZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUpIHsKICAgIGlmIChP YmplY3QuaXNVbmRlZmluZWQodmFsdWUpKQogICAgICByZXR1cm4gdGhpc1tlbGVt ZW50LnR5cGUgPT0gJ3NlbGVjdC1vbmUnID8KICAgICAgICAnc2VsZWN0T25lJyA6 ICdzZWxlY3RNYW55J10oZWxlbWVudCk7CiAgICBlbHNlIHsKICAgICAgdmFyIG9w dCwgY3VycmVudFZhbHVlLCBzaW5nbGUgPSAhT2JqZWN0LmlzQXJyYXkodmFsdWUp OwogICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZWxlbWVudC5sZW5ndGg7 IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgIG9wdCA9IGVsZW1lbnQub3B0aW9u c1tpXTsKICAgICAgICBjdXJyZW50VmFsdWUgPSB0aGlzLm9wdGlvblZhbHVlKG9w dCk7CiAgICAgICAgaWYgKHNpbmdsZSkgewogICAgICAgICAgaWYgKGN1cnJlbnRW YWx1ZSA9PSB2YWx1ZSkgewogICAgICAgICAgICBvcHQuc2VsZWN0ZWQgPSB0cnVl OwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgfQogICAg ICAgIGVsc2Ugb3B0LnNlbGVjdGVkID0gdmFsdWUuaW5jbHVkZShjdXJyZW50VmFs dWUpOwogICAgICB9CiAgICB9CiAgfSwKCiAgc2VsZWN0T25lOiBmdW5jdGlvbihl bGVtZW50KSB7CiAgICB2YXIgaW5kZXggPSBlbGVtZW50LnNlbGVjdGVkSW5kZXg7 CiAgICByZXR1cm4gaW5kZXggPj0gMCA/IHRoaXMub3B0aW9uVmFsdWUoZWxlbWVu dC5vcHRpb25zW2luZGV4XSkgOiBudWxsOwogIH0sCgogIHNlbGVjdE1hbnk6IGZ1 bmN0aW9uKGVsZW1lbnQpIHsKICAgIHZhciB2YWx1ZXMsIGxlbmd0aCA9IGVsZW1l bnQubGVuZ3RoOwogICAgaWYgKCFsZW5ndGgpIHJldHVybiBudWxsOwoKICAgIGZv ciAodmFyIGkgPSAwLCB2YWx1ZXMgPSBbXTsgaSA8IGxlbmd0aDsgaSsrKSB7CiAg ICAgIHZhciBvcHQgPSBlbGVtZW50Lm9wdGlvbnNbaV07CiAgICAgIGlmIChvcHQu c2VsZWN0ZWQpIHZhbHVlcy5wdXNoKHRoaXMub3B0aW9uVmFsdWUob3B0KSk7CiAg ICB9CiAgICByZXR1cm4gdmFsdWVzOwogIH0sCgogIG9wdGlvblZhbHVlOiBmdW5j dGlvbihvcHQpIHsKICAgIC8vIGV4dGVuZCBlbGVtZW50IGJlY2F1c2UgaGFzQXR0 cmlidXRlIG1heSBub3QgYmUgbmF0aXZlCiAgICByZXR1cm4gRWxlbWVudC5leHRl bmQob3B0KS5oYXNBdHRyaWJ1dGUoJ3ZhbHVlJykgPyBvcHQudmFsdWUgOiBvcHQu dGV4dDsKICB9Cn07CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCkFi c3RyYWN0LlRpbWVkT2JzZXJ2ZXIgPSBDbGFzcy5jcmVhdGUoUGVyaW9kaWNhbEV4 ZWN1dGVyLCB7CiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oJHN1cGVyLCBlbGVtZW50 LCBmcmVxdWVuY3ksIGNhbGxiYWNrKSB7CiAgICAkc3VwZXIoY2FsbGJhY2ssIGZy ZXF1ZW5jeSk7CiAgICB0aGlzLmVsZW1lbnQgICA9ICQoZWxlbWVudCk7CiAgICB0 aGlzLmxhc3RWYWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTsKICB9LAoKICBleGVjdXRl OiBmdW5jdGlvbigpIHsKICAgIHZhciB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTsK ICAgIGlmIChPYmplY3QuaXNTdHJpbmcodGhpcy5sYXN0VmFsdWUpICYmIE9iamVj dC5pc1N0cmluZyh2YWx1ZSkgPwogICAgICAgIHRoaXMubGFzdFZhbHVlICE9IHZh bHVlIDogU3RyaW5nKHRoaXMubGFzdFZhbHVlKSAhPSBTdHJpbmcodmFsdWUpKSB7 CiAgICAgIHRoaXMuY2FsbGJhY2sodGhpcy5lbGVtZW50LCB2YWx1ZSk7CiAgICAg IHRoaXMubGFzdFZhbHVlID0gdmFsdWU7CiAgICB9CiAgfQp9KTsKCkZvcm0uRWxl bWVudC5PYnNlcnZlciA9IENsYXNzLmNyZWF0ZShBYnN0cmFjdC5UaW1lZE9ic2Vy dmVyLCB7CiAgZ2V0VmFsdWU6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIEZvcm0u RWxlbWVudC5nZXRWYWx1ZSh0aGlzLmVsZW1lbnQpOwogIH0KfSk7CgpGb3JtLk9i c2VydmVyID0gQ2xhc3MuY3JlYXRlKEFic3RyYWN0LlRpbWVkT2JzZXJ2ZXIsIHsK ICBnZXRWYWx1ZTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gRm9ybS5zZXJpYWxp emUodGhpcy5lbGVtZW50KTsKICB9Cn0pOwoKLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSovCgpBYnN0cmFjdC5FdmVudE9ic2VydmVyID0gQ2xhc3MuY3JlYXRl KHsKICBpbml0aWFsaXplOiBmdW5jdGlvbihlbGVtZW50LCBjYWxsYmFjaykgewog ICAgdGhpcy5lbGVtZW50ICA9ICQoZWxlbWVudCk7CiAgICB0aGlzLmNhbGxiYWNr ID0gY2FsbGJhY2s7CgogICAgdGhpcy5sYXN0VmFsdWUgPSB0aGlzLmdldFZhbHVl KCk7CiAgICBpZiAodGhpcy5lbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9 PSAnZm9ybScpCiAgICAgIHRoaXMucmVnaXN0ZXJGb3JtQ2FsbGJhY2tzKCk7CiAg ICBlbHNlCiAgICAgIHRoaXMucmVnaXN0ZXJDYWxsYmFjayh0aGlzLmVsZW1lbnQp OwogIH0sCgogIG9uRWxlbWVudEV2ZW50OiBmdW5jdGlvbigpIHsKICAgIHZhciB2 YWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTsKICAgIGlmICh0aGlzLmxhc3RWYWx1ZSAh PSB2YWx1ZSkgewogICAgICB0aGlzLmNhbGxiYWNrKHRoaXMuZWxlbWVudCwgdmFs dWUpOwogICAgICB0aGlzLmxhc3RWYWx1ZSA9IHZhbHVlOwogICAgfQogIH0sCgog IHJlZ2lzdGVyRm9ybUNhbGxiYWNrczogZnVuY3Rpb24oKSB7CiAgICBGb3JtLmdl dEVsZW1lbnRzKHRoaXMuZWxlbWVudCkuZWFjaCh0aGlzLnJlZ2lzdGVyQ2FsbGJh Y2ssIHRoaXMpOwogIH0sCgogIHJlZ2lzdGVyQ2FsbGJhY2s6IGZ1bmN0aW9uKGVs ZW1lbnQpIHsKICAgIGlmIChlbGVtZW50LnR5cGUpIHsKICAgICAgc3dpdGNoIChl bGVtZW50LnR5cGUudG9Mb3dlckNhc2UoKSkgewogICAgICAgIGNhc2UgJ2NoZWNr Ym94JzoKICAgICAgICBjYXNlICdyYWRpbyc6CiAgICAgICAgICBFdmVudC5vYnNl cnZlKGVsZW1lbnQsICdjbGljaycsIHRoaXMub25FbGVtZW50RXZlbnQuYmluZCh0 aGlzKSk7CiAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAg ICAgRXZlbnQub2JzZXJ2ZShlbGVtZW50LCAnY2hhbmdlJywgdGhpcy5vbkVsZW1l bnRFdmVudC5iaW5kKHRoaXMpKTsKICAgICAgICAgIGJyZWFrOwogICAgICB9CiAg ICB9CiAgfQp9KTsKCkZvcm0uRWxlbWVudC5FdmVudE9ic2VydmVyID0gQ2xhc3Mu Y3JlYXRlKEFic3RyYWN0LkV2ZW50T2JzZXJ2ZXIsIHsKICBnZXRWYWx1ZTogZnVu Y3Rpb24oKSB7CiAgICByZXR1cm4gRm9ybS5FbGVtZW50LmdldFZhbHVlKHRoaXMu ZWxlbWVudCk7CiAgfQp9KTsKCkZvcm0uRXZlbnRPYnNlcnZlciA9IENsYXNzLmNy ZWF0ZShBYnN0cmFjdC5FdmVudE9ic2VydmVyLCB7CiAgZ2V0VmFsdWU6IGZ1bmN0 aW9uKCkgewogICAgcmV0dXJuIEZvcm0uc2VyaWFsaXplKHRoaXMuZWxlbWVudCk7 CiAgfQp9KTsKaWYgKCF3aW5kb3cuRXZlbnQpIHZhciBFdmVudCA9IHsgfTsKCk9i amVjdC5leHRlbmQoRXZlbnQsIHsKICBLRVlfQkFDS1NQQUNFOiA4LAogIEtFWV9U QUI6ICAgICAgIDksCiAgS0VZX1JFVFVSTjogICAxMywKICBLRVlfRVNDOiAgICAg IDI3LAogIEtFWV9MRUZUOiAgICAgMzcsCiAgS0VZX1VQOiAgICAgICAzOCwKICBL RVlfUklHSFQ6ICAgIDM5LAogIEtFWV9ET1dOOiAgICAgNDAsCiAgS0VZX0RFTEVU RTogICA0NiwKICBLRVlfSE9NRTogICAgIDM2LAogIEtFWV9FTkQ6ICAgICAgMzUs CiAgS0VZX1BBR0VVUDogICAzMywKICBLRVlfUEFHRURPV046IDM0LAogIEtFWV9J TlNFUlQ6ICAgNDUsCgogIGNhY2hlOiB7IH0sCgogIHJlbGF0ZWRUYXJnZXQ6IGZ1 bmN0aW9uKGV2ZW50KSB7CiAgICB2YXIgZWxlbWVudDsKICAgIHN3aXRjaChldmVu dC50eXBlKSB7CiAgICAgIGNhc2UgJ21vdXNlb3Zlcic6IGVsZW1lbnQgPSBldmVu dC5mcm9tRWxlbWVudDsgYnJlYWs7CiAgICAgIGNhc2UgJ21vdXNlb3V0JzogIGVs ZW1lbnQgPSBldmVudC50b0VsZW1lbnQ7ICAgYnJlYWs7CiAgICAgIGRlZmF1bHQ6 IHJldHVybiBudWxsOwogICAgfQogICAgcmV0dXJuIEVsZW1lbnQuZXh0ZW5kKGVs ZW1lbnQpOwogIH0KfSk7CgpFdmVudC5NZXRob2RzID0gKGZ1bmN0aW9uKCkgewog IHZhciBpc0J1dHRvbjsKCiAgaWYgKFByb3RvdHlwZS5Ccm93c2VyLklFKSB7CiAg ICB2YXIgYnV0dG9uTWFwID0geyAwOiAxLCAxOiA0LCAyOiAyIH07CiAgICBpc0J1 dHRvbiA9IGZ1bmN0aW9uKGV2ZW50LCBjb2RlKSB7CiAgICAgIHJldHVybiBldmVu dC5idXR0b24gPT0gYnV0dG9uTWFwW2NvZGVdOwogICAgfTsKCiAgfSBlbHNlIGlm IChQcm90b3R5cGUuQnJvd3Nlci5XZWJLaXQpIHsKICAgIGlzQnV0dG9uID0gZnVu Y3Rpb24oZXZlbnQsIGNvZGUpIHsKICAgICAgc3dpdGNoIChjb2RlKSB7CiAgICAg ICAgY2FzZSAwOiByZXR1cm4gZXZlbnQud2hpY2ggPT0gMSAmJiAhZXZlbnQubWV0 YUtleTsKICAgICAgICBjYXNlIDE6IHJldHVybiBldmVudC53aGljaCA9PSAxICYm IGV2ZW50Lm1ldGFLZXk7CiAgICAgICAgZGVmYXVsdDogcmV0dXJuIGZhbHNlOwog ICAgICB9CiAgICB9OwoKICB9IGVsc2UgewogICAgaXNCdXR0b24gPSBmdW5jdGlv bihldmVudCwgY29kZSkgewogICAgICByZXR1cm4gZXZlbnQud2hpY2ggPyAoZXZl bnQud2hpY2ggPT09IGNvZGUgKyAxKSA6IChldmVudC5idXR0b24gPT09IGNvZGUp OwogICAgfTsKICB9CgogIHJldHVybiB7CiAgICBpc0xlZnRDbGljazogICBmdW5j dGlvbihldmVudCkgeyByZXR1cm4gaXNCdXR0b24oZXZlbnQsIDApIH0sCiAgICBp c01pZGRsZUNsaWNrOiBmdW5jdGlvbihldmVudCkgeyByZXR1cm4gaXNCdXR0b24o ZXZlbnQsIDEpIH0sCiAgICBpc1JpZ2h0Q2xpY2s6ICBmdW5jdGlvbihldmVudCkg eyByZXR1cm4gaXNCdXR0b24oZXZlbnQsIDIpIH0sCgogICAgZWxlbWVudDogZnVu Y3Rpb24oZXZlbnQpIHsKICAgICAgZXZlbnQgPSBFdmVudC5leHRlbmQoZXZlbnQp OwoKICAgICAgdmFyIG5vZGUgICAgICAgICAgPSBldmVudC50YXJnZXQsCiAgICAg ICAgICB0eXBlICAgICAgICAgID0gZXZlbnQudHlwZSwKICAgICAgICAgIGN1cnJl bnRUYXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0OwoKICAgICAgaWYgKGN1cnJl bnRUYXJnZXQgJiYgY3VycmVudFRhcmdldC50YWdOYW1lKSB7CiAgICAgICAgLy8g RmlyZWZveCBzY3Jld3MgdXAgdGhlICJjbGljayIgZXZlbnQgd2hlbiBtb3Zpbmcg YmV0d2VlbiByYWRpbyBidXR0b25zCiAgICAgICAgLy8gdmlhIGFycm93IGtleXMu IEl0IGFsc28gc2NyZXdzIHVwIHRoZSAibG9hZCIgYW5kICJlcnJvciIgZXZlbnRz IG9uIGltYWdlcywKICAgICAgICAvLyByZXBvcnRpbmcgdGhlIGRvY3VtZW50IGFz IHRoZSB0YXJnZXQgaW5zdGVhZCBvZiB0aGUgb3JpZ2luYWwgaW1hZ2UuCiAgICAg ICAgaWYgKHR5cGUgPT09ICdsb2FkJyB8fCB0eXBlID09PSAnZXJyb3InIHx8CiAg ICAgICAgICAodHlwZSA9PT0gJ2NsaWNrJyAmJiBjdXJyZW50VGFyZ2V0LnRhZ05h bWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0JwogICAgICAgICAgICAmJiBjdXJy ZW50VGFyZ2V0LnR5cGUgPT09ICdyYWRpbycpKQogICAgICAgICAgICAgIG5vZGUg PSBjdXJyZW50VGFyZ2V0OwogICAgICB9CiAgICAgIGlmIChub2RlLm5vZGVUeXBl ID09IE5vZGUuVEVYVF9OT0RFKSBub2RlID0gbm9kZS5wYXJlbnROb2RlOwogICAg ICByZXR1cm4gRWxlbWVudC5leHRlbmQobm9kZSk7CiAgICB9LAoKICAgIGZpbmRF bGVtZW50OiBmdW5jdGlvbihldmVudCwgZXhwcmVzc2lvbikgewogICAgICB2YXIg ZWxlbWVudCA9IEV2ZW50LmVsZW1lbnQoZXZlbnQpOwogICAgICBpZiAoIWV4cHJl c3Npb24pIHJldHVybiBlbGVtZW50OwogICAgICB2YXIgZWxlbWVudHMgPSBbZWxl bWVudF0uY29uY2F0KGVsZW1lbnQuYW5jZXN0b3JzKCkpOwogICAgICByZXR1cm4g U2VsZWN0b3IuZmluZEVsZW1lbnQoZWxlbWVudHMsIGV4cHJlc3Npb24sIDApOwog ICAgfSwKCiAgICBwb2ludGVyOiBmdW5jdGlvbihldmVudCkgewogICAgICB2YXIg ZG9jRWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwKICAgICAgYm9k eSA9IGRvY3VtZW50LmJvZHkgfHwgeyBzY3JvbGxMZWZ0OiAwLCBzY3JvbGxUb3A6 IDAgfTsKICAgICAgcmV0dXJuIHsKICAgICAgICB4OiBldmVudC5wYWdlWCB8fCAo ZXZlbnQuY2xpZW50WCArCiAgICAgICAgICAoZG9jRWxlbWVudC5zY3JvbGxMZWZ0 IHx8IGJvZHkuc2Nyb2xsTGVmdCkgLQogICAgICAgICAgKGRvY0VsZW1lbnQuY2xp ZW50TGVmdCB8fCAwKSksCiAgICAgICAgeTogZXZlbnQucGFnZVkgfHwgKGV2ZW50 LmNsaWVudFkgKwogICAgICAgICAgKGRvY0VsZW1lbnQuc2Nyb2xsVG9wIHx8IGJv ZHkuc2Nyb2xsVG9wKSAtCiAgICAgICAgICAoZG9jRWxlbWVudC5jbGllbnRUb3Ag fHwgMCkpCiAgICAgIH07CiAgICB9LAoKICAgIHBvaW50ZXJYOiBmdW5jdGlvbihl dmVudCkgeyByZXR1cm4gRXZlbnQucG9pbnRlcihldmVudCkueCB9LAogICAgcG9p bnRlclk6IGZ1bmN0aW9uKGV2ZW50KSB7IHJldHVybiBFdmVudC5wb2ludGVyKGV2 ZW50KS55IH0sCgogICAgc3RvcDogZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgRXZl bnQuZXh0ZW5kKGV2ZW50KTsKICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsK ICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgIGV2ZW50LnN0b3Bw ZWQgPSB0cnVlOwogICAgfQogIH07Cn0pKCk7CgpFdmVudC5leHRlbmQgPSAoZnVu Y3Rpb24oKSB7CiAgdmFyIG1ldGhvZHMgPSBPYmplY3Qua2V5cyhFdmVudC5NZXRo b2RzKS5pbmplY3QoeyB9LCBmdW5jdGlvbihtLCBuYW1lKSB7CiAgICBtW25hbWVd ID0gRXZlbnQuTWV0aG9kc1tuYW1lXS5tZXRob2RpemUoKTsKICAgIHJldHVybiBt OwogIH0pOwoKICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuSUUpIHsKICAgIE9iamVj dC5leHRlbmQobWV0aG9kcywgewogICAgICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0 aW9uKCkgeyB0aGlzLmNhbmNlbEJ1YmJsZSA9IHRydWUgfSwKICAgICAgcHJldmVu dERlZmF1bHQ6ICBmdW5jdGlvbigpIHsgdGhpcy5yZXR1cm5WYWx1ZSA9IGZhbHNl IH0sCiAgICAgIGluc3BlY3Q6IGZ1bmN0aW9uKCkgeyByZXR1cm4gIltvYmplY3Qg RXZlbnRdIiB9CiAgICB9KTsKCiAgICByZXR1cm4gZnVuY3Rpb24oZXZlbnQpIHsK ICAgICAgaWYgKCFldmVudCkgcmV0dXJuIGZhbHNlOwogICAgICBpZiAoZXZlbnQu X2V4dGVuZGVkQnlQcm90b3R5cGUpIHJldHVybiBldmVudDsKCiAgICAgIGV2ZW50 Ll9leHRlbmRlZEJ5UHJvdG90eXBlID0gUHJvdG90eXBlLmVtcHR5RnVuY3Rpb247 CiAgICAgIHZhciBwb2ludGVyID0gRXZlbnQucG9pbnRlcihldmVudCk7CiAgICAg IE9iamVjdC5leHRlbmQoZXZlbnQsIHsKICAgICAgICB0YXJnZXQ6IGV2ZW50LnNy Y0VsZW1lbnQsCiAgICAgICAgcmVsYXRlZFRhcmdldDogRXZlbnQucmVsYXRlZFRh cmdldChldmVudCksCiAgICAgICAgcGFnZVg6ICBwb2ludGVyLngsCiAgICAgICAg cGFnZVk6ICBwb2ludGVyLnkKICAgICAgfSk7CiAgICAgIHJldHVybiBPYmplY3Qu ZXh0ZW5kKGV2ZW50LCBtZXRob2RzKTsKICAgIH07CgogIH0gZWxzZSB7CiAgICBF dmVudC5wcm90b3R5cGUgPSBFdmVudC5wcm90b3R5cGUgfHwgZG9jdW1lbnQuY3Jl YXRlRXZlbnQoIkhUTUxFdmVudHMiKVsnX19wcm90b19fJ107CiAgICBPYmplY3Qu ZXh0ZW5kKEV2ZW50LnByb3RvdHlwZSwgbWV0aG9kcyk7CiAgICByZXR1cm4gUHJv dG90eXBlLks7CiAgfQp9KSgpOwoKT2JqZWN0LmV4dGVuZChFdmVudCwgKGZ1bmN0 aW9uKCkgewogIHZhciBjYWNoZSA9IEV2ZW50LmNhY2hlOwoKICBmdW5jdGlvbiBn ZXRFdmVudElEKGVsZW1lbnQpIHsKICAgIGlmIChlbGVtZW50Ll9wcm90b3R5cGVF dmVudElEKSByZXR1cm4gZWxlbWVudC5fcHJvdG90eXBlRXZlbnRJRFswXTsKICAg IGFyZ3VtZW50cy5jYWxsZWUuaWQgPSBhcmd1bWVudHMuY2FsbGVlLmlkIHx8IDE7 CiAgICByZXR1cm4gZWxlbWVudC5fcHJvdG90eXBlRXZlbnRJRCA9IFsrK2FyZ3Vt ZW50cy5jYWxsZWUuaWRdOwogIH0KCiAgZnVuY3Rpb24gZ2V0RE9NRXZlbnROYW1l KGV2ZW50TmFtZSkgewogICAgaWYgKGV2ZW50TmFtZSAmJiBldmVudE5hbWUuaW5j bHVkZSgnOicpKSByZXR1cm4gImRhdGFhdmFpbGFibGUiOwogICAgcmV0dXJuIGV2 ZW50TmFtZTsKICB9CgogIGZ1bmN0aW9uIGdldENhY2hlRm9ySUQoaWQpIHsKICAg IHJldHVybiBjYWNoZVtpZF0gPSBjYWNoZVtpZF0gfHwgeyB9OwogIH0KCiAgZnVu Y3Rpb24gZ2V0V3JhcHBlcnNGb3JFdmVudE5hbWUoaWQsIGV2ZW50TmFtZSkgewog ICAgdmFyIGMgPSBnZXRDYWNoZUZvcklEKGlkKTsKICAgIHJldHVybiBjW2V2ZW50 TmFtZV0gPSBjW2V2ZW50TmFtZV0gfHwgW107CiAgfQoKICBmdW5jdGlvbiBjcmVh dGVXcmFwcGVyKGVsZW1lbnQsIGV2ZW50TmFtZSwgaGFuZGxlcikgewogICAgdmFy IGlkID0gZ2V0RXZlbnRJRChlbGVtZW50KTsKICAgIHZhciBjID0gZ2V0V3JhcHBl cnNGb3JFdmVudE5hbWUoaWQsIGV2ZW50TmFtZSk7CiAgICBpZiAoYy5wbHVjaygi aGFuZGxlciIpLmluY2x1ZGUoaGFuZGxlcikpIHJldHVybiBmYWxzZTsKCiAgICB2 YXIgd3JhcHBlciA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgIGlmICghRXZlbnQg fHwgIUV2ZW50LmV4dGVuZCB8fAogICAgICAgIChldmVudC5ldmVudE5hbWUgJiYg ZXZlbnQuZXZlbnROYW1lICE9IGV2ZW50TmFtZSkpCiAgICAgICAgICByZXR1cm4g ZmFsc2U7CgogICAgICBFdmVudC5leHRlbmQoZXZlbnQpOwogICAgICBoYW5kbGVy LmNhbGwoZWxlbWVudCwgZXZlbnQpOwogICAgfTsKCiAgICB3cmFwcGVyLmhhbmRs ZXIgPSBoYW5kbGVyOwogICAgYy5wdXNoKHdyYXBwZXIpOwogICAgcmV0dXJuIHdy YXBwZXI7CiAgfQoKICBmdW5jdGlvbiBmaW5kV3JhcHBlcihpZCwgZXZlbnROYW1l LCBoYW5kbGVyKSB7CiAgICB2YXIgYyA9IGdldFdyYXBwZXJzRm9yRXZlbnROYW1l KGlkLCBldmVudE5hbWUpOwogICAgcmV0dXJuIGMuZmluZChmdW5jdGlvbih3cmFw cGVyKSB7IHJldHVybiB3cmFwcGVyLmhhbmRsZXIgPT0gaGFuZGxlciB9KTsKICB9 CgogIGZ1bmN0aW9uIGRlc3Ryb3lXcmFwcGVyKGlkLCBldmVudE5hbWUsIGhhbmRs ZXIpIHsKICAgIHZhciBjID0gZ2V0Q2FjaGVGb3JJRChpZCk7CiAgICBpZiAoIWNb ZXZlbnROYW1lXSkgcmV0dXJuIGZhbHNlOwogICAgY1tldmVudE5hbWVdID0gY1tl dmVudE5hbWVdLndpdGhvdXQoZmluZFdyYXBwZXIoaWQsIGV2ZW50TmFtZSwgaGFu ZGxlcikpOwogIH0KCiAgZnVuY3Rpb24gZGVzdHJveUNhY2hlKCkgewogICAgZm9y ICh2YXIgaWQgaW4gY2FjaGUpCiAgICAgIGZvciAodmFyIGV2ZW50TmFtZSBpbiBj YWNoZVtpZF0pCiAgICAgICAgY2FjaGVbaWRdW2V2ZW50TmFtZV0gPSBudWxsOwog IH0KCgogIC8vIEludGVybmV0IEV4cGxvcmVyIG5lZWRzIHRvIHJlbW92ZSBldmVu dCBoYW5kbGVycyBvbiBwYWdlIHVubG9hZAogIC8vIGluIG9yZGVyIHRvIGF2b2lk IG1lbW9yeSBsZWFrcy4KICBpZiAod2luZG93LmF0dGFjaEV2ZW50KSB7CiAgICB3 aW5kb3cuYXR0YWNoRXZlbnQoIm9udW5sb2FkIiwgZGVzdHJveUNhY2hlKTsKICB9 CgogIC8vIFNhZmFyaSBoYXMgYSBkdW1teSBldmVudCBoYW5kbGVyIG9uIHBhZ2Ug dW5sb2FkIHNvIHRoYXQgaXQgd29uJ3QKICAvLyB1c2UgaXRzIGJmY2FjaGUuIFNh ZmFyaSA8PSAzLjEgaGFzIGFuIGlzc3VlIHdpdGggcmVzdG9yaW5nIHRoZSAiZG9j dW1lbnQiCiAgLy8gb2JqZWN0IHdoZW4gcGFnZSBpcyByZXR1cm5lZCB0byB2aWEg dGhlIGJhY2sgYnV0dG9uIHVzaW5nIGl0cyBiZmNhY2hlLgogIGlmIChQcm90b3R5 cGUuQnJvd3Nlci5XZWJLaXQpIHsKICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVy KCd1bmxvYWQnLCBQcm90b3R5cGUuZW1wdHlGdW5jdGlvbiwgZmFsc2UpOwogIH0K CiAgcmV0dXJuIHsKICAgIG9ic2VydmU6IGZ1bmN0aW9uKGVsZW1lbnQsIGV2ZW50 TmFtZSwgaGFuZGxlcikgewogICAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAg ICAgdmFyIG5hbWUgPSBnZXRET01FdmVudE5hbWUoZXZlbnROYW1lKTsKCiAgICAg IHZhciB3cmFwcGVyID0gY3JlYXRlV3JhcHBlcihlbGVtZW50LCBldmVudE5hbWUs IGhhbmRsZXIpOwogICAgICBpZiAoIXdyYXBwZXIpIHJldHVybiBlbGVtZW50OwoK ICAgICAgaWYgKGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgICAgIGVs ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCB3cmFwcGVyLCBmYWxzZSk7CiAg ICAgIH0gZWxzZSB7CiAgICAgICAgZWxlbWVudC5hdHRhY2hFdmVudCgib24iICsg bmFtZSwgd3JhcHBlcik7CiAgICAgIH0KCiAgICAgIHJldHVybiBlbGVtZW50Owog ICAgfSwKCiAgICBzdG9wT2JzZXJ2aW5nOiBmdW5jdGlvbihlbGVtZW50LCBldmVu dE5hbWUsIGhhbmRsZXIpIHsKICAgICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAg ICAgIHZhciBpZCA9IGdldEV2ZW50SUQoZWxlbWVudCksIG5hbWUgPSBnZXRET01F dmVudE5hbWUoZXZlbnROYW1lKTsKCiAgICAgIGlmICghaGFuZGxlciAmJiBldmVu dE5hbWUpIHsKICAgICAgICBnZXRXcmFwcGVyc0ZvckV2ZW50TmFtZShpZCwgZXZl bnROYW1lKS5lYWNoKGZ1bmN0aW9uKHdyYXBwZXIpIHsKICAgICAgICAgIGVsZW1l bnQuc3RvcE9ic2VydmluZyhldmVudE5hbWUsIHdyYXBwZXIuaGFuZGxlcik7CiAg ICAgICAgfSk7CiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CgogICAgICB9IGVsc2Ug aWYgKCFldmVudE5hbWUpIHsKICAgICAgICBPYmplY3Qua2V5cyhnZXRDYWNoZUZv cklEKGlkKSkuZWFjaChmdW5jdGlvbihldmVudE5hbWUpIHsKICAgICAgICAgIGVs ZW1lbnQuc3RvcE9ic2VydmluZyhldmVudE5hbWUpOwogICAgICAgIH0pOwogICAg ICAgIHJldHVybiBlbGVtZW50OwogICAgICB9CgogICAgICB2YXIgd3JhcHBlciA9 IGZpbmRXcmFwcGVyKGlkLCBldmVudE5hbWUsIGhhbmRsZXIpOwogICAgICBpZiAo IXdyYXBwZXIpIHJldHVybiBlbGVtZW50OwoKICAgICAgaWYgKGVsZW1lbnQucmVt b3ZlRXZlbnRMaXN0ZW5lcikgewogICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRM aXN0ZW5lcihuYW1lLCB3cmFwcGVyLCBmYWxzZSk7CiAgICAgIH0gZWxzZSB7CiAg ICAgICAgZWxlbWVudC5kZXRhY2hFdmVudCgib24iICsgbmFtZSwgd3JhcHBlcik7 CiAgICAgIH0KCiAgICAgIGRlc3Ryb3lXcmFwcGVyKGlkLCBldmVudE5hbWUsIGhh bmRsZXIpOwoKICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICB9LAoKICAgIGZpcmU6 IGZ1bmN0aW9uKGVsZW1lbnQsIGV2ZW50TmFtZSwgbWVtbykgewogICAgICBlbGVt ZW50ID0gJChlbGVtZW50KTsKICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQg JiYgZG9jdW1lbnQuY3JlYXRlRXZlbnQgJiYgIWVsZW1lbnQuZGlzcGF0Y2hFdmVu dCkKICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwoK ICAgICAgdmFyIGV2ZW50OwogICAgICBpZiAoZG9jdW1lbnQuY3JlYXRlRXZlbnQp IHsKICAgICAgICBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJIVE1MRXZl bnRzIik7CiAgICAgICAgZXZlbnQuaW5pdEV2ZW50KCJkYXRhYXZhaWxhYmxlIiwg dHJ1ZSwgdHJ1ZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZXZlbnQgPSBkb2N1 bWVudC5jcmVhdGVFdmVudE9iamVjdCgpOwogICAgICAgIGV2ZW50LmV2ZW50VHlw ZSA9ICJvbmRhdGFhdmFpbGFibGUiOwogICAgICB9CgogICAgICBldmVudC5ldmVu dE5hbWUgPSBldmVudE5hbWU7CiAgICAgIGV2ZW50Lm1lbW8gPSBtZW1vIHx8IHsg fTsKCiAgICAgIGlmIChkb2N1bWVudC5jcmVhdGVFdmVudCkgewogICAgICAgIGVs ZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7CiAgICAgIH0gZWxzZSB7CiAgICAg ICAgZWxlbWVudC5maXJlRXZlbnQoZXZlbnQuZXZlbnRUeXBlLCBldmVudCk7CiAg ICAgIH0KCiAgICAgIHJldHVybiBFdmVudC5leHRlbmQoZXZlbnQpOwogICAgfQog IH07Cn0pKCkpOwoKT2JqZWN0LmV4dGVuZChFdmVudCwgRXZlbnQuTWV0aG9kcyk7 CgpFbGVtZW50LmFkZE1ldGhvZHMoewogIGZpcmU6ICAgICAgICAgIEV2ZW50LmZp cmUsCiAgb2JzZXJ2ZTogICAgICAgRXZlbnQub2JzZXJ2ZSwKICBzdG9wT2JzZXJ2 aW5nOiBFdmVudC5zdG9wT2JzZXJ2aW5nCn0pOwoKT2JqZWN0LmV4dGVuZChkb2N1 bWVudCwgewogIGZpcmU6ICAgICAgICAgIEVsZW1lbnQuTWV0aG9kcy5maXJlLm1l dGhvZGl6ZSgpLAogIG9ic2VydmU6ICAgICAgIEVsZW1lbnQuTWV0aG9kcy5vYnNl cnZlLm1ldGhvZGl6ZSgpLAogIHN0b3BPYnNlcnZpbmc6IEVsZW1lbnQuTWV0aG9k cy5zdG9wT2JzZXJ2aW5nLm1ldGhvZGl6ZSgpLAogIGxvYWRlZDogICAgICAgIGZh bHNlCn0pOwoKKGZ1bmN0aW9uKCkgewogIC8qIFN1cHBvcnQgZm9yIHRoZSBET01D b250ZW50TG9hZGVkIGV2ZW50IGlzIGJhc2VkIG9uIHdvcmsgYnkgRGFuIFdlYmIs CiAgICAgTWF0dGhpYXMgTWlsbGVyLCBEZWFuIEVkd2FyZHMgYW5kIEpvaG4gUmVz aWcuICovCgogIHZhciB0aW1lcjsKCiAgZnVuY3Rpb24gZmlyZUNvbnRlbnRMb2Fk ZWRFdmVudCgpIHsKICAgIGlmIChkb2N1bWVudC5sb2FkZWQpIHJldHVybjsKICAg IGlmICh0aW1lcikgd2luZG93LmNsZWFySW50ZXJ2YWwodGltZXIpOwogICAgZG9j dW1lbnQuZmlyZSgiZG9tOmxvYWRlZCIpOwogICAgZG9jdW1lbnQubG9hZGVkID0g dHJ1ZTsKICB9CgogIGlmIChkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7CiAg ICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuV2ViS2l0KSB7CiAgICAgIHRpbWVyID0g d2luZG93LnNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAgIGlmICgvbG9h ZGVkfGNvbXBsZXRlLy50ZXN0KGRvY3VtZW50LnJlYWR5U3RhdGUpKQogICAgICAg ICAgZmlyZUNvbnRlbnRMb2FkZWRFdmVudCgpOwogICAgICB9LCAwKTsKCiAgICAg IEV2ZW50Lm9ic2VydmUod2luZG93LCAibG9hZCIsIGZpcmVDb250ZW50TG9hZGVk RXZlbnQpOwoKICAgIH0gZWxzZSB7CiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlz dGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLAogICAgICAgIGZpcmVDb250ZW50TG9h ZGVkRXZlbnQsIGZhbHNlKTsKICAgIH0KCiAgfSBlbHNlIHsKICAgIGRvY3VtZW50 LndyaXRlKCI8c2NyaXB0IGlkPV9fb25ET01Db250ZW50TG9hZGVkIGRlZmVyIHNy Yz0vLzo+PFwvc2NyaXB0PiIpOwogICAgJCgiX19vbkRPTUNvbnRlbnRMb2FkZWQi KS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICAgaWYgKHRo aXMucmVhZHlTdGF0ZSA9PSAiY29tcGxldGUiKSB7CiAgICAgICAgdGhpcy5vbnJl YWR5c3RhdGVjaGFuZ2UgPSBudWxsOwogICAgICAgIGZpcmVDb250ZW50TG9hZGVk RXZlbnQoKTsKICAgICAgfQogICAgfTsKICB9Cn0pKCk7Ci8qLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSBERVBSRUNBVEVEIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0qLwoKSGFzaC50b1F1ZXJ5U3RyaW5nID0gT2JqZWN0LnRv UXVlcnlTdHJpbmc7Cgp2YXIgVG9nZ2xlID0geyBkaXNwbGF5OiBFbGVtZW50LnRv Z2dsZSB9OwoKRWxlbWVudC5NZXRob2RzLmNoaWxkT2YgPSBFbGVtZW50Lk1ldGhv ZHMuZGVzY2VuZGFudE9mOwoKdmFyIEluc2VydGlvbiA9IHsKICBCZWZvcmU6IGZ1 bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIHJldHVybiBFbGVtZW50Lmlu c2VydChlbGVtZW50LCB7YmVmb3JlOmNvbnRlbnR9KTsKICB9LAoKICBUb3A6IGZ1 bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIHJldHVybiBFbGVtZW50Lmlu c2VydChlbGVtZW50LCB7dG9wOmNvbnRlbnR9KTsKICB9LAoKICBCb3R0b206IGZ1 bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIHJldHVybiBFbGVtZW50Lmlu c2VydChlbGVtZW50LCB7Ym90dG9tOmNvbnRlbnR9KTsKICB9LAoKICBBZnRlcjog ZnVuY3Rpb24oZWxlbWVudCwgY29udGVudCkgewogICAgcmV0dXJuIEVsZW1lbnQu aW5zZXJ0KGVsZW1lbnQsIHthZnRlcjpjb250ZW50fSk7CiAgfQp9OwoKdmFyICRj b250aW51ZSA9IG5ldyBFcnJvcignInRocm93ICRjb250aW51ZSIgaXMgZGVwcmVj YXRlZCwgdXNlICJyZXR1cm4iIGluc3RlYWQnKTsKCi8vIFRoaXMgc2hvdWxkIGJl IG1vdmVkIHRvIHNjcmlwdC5hY3Vsby51czsgbm90aWNlIHRoZSBkZXByZWNhdGVk IG1ldGhvZHMKLy8gZnVydGhlciBiZWxvdywgdGhhdCBtYXAgdG8gdGhlIG5ld2Vy IEVsZW1lbnQgbWV0aG9kcy4KdmFyIFBvc2l0aW9uID0gewogIC8vIHNldCB0byB0 cnVlIGlmIG5lZWRlZCwgd2FybmluZzogZmlyZWZveCBwZXJmb3JtYW5jZSBwcm9i bGVtcwogIC8vIE5PVCBuZWVlZGVkIGZvciBwYWdlIHNjcm9sbGluZywgb25seSBp ZiBkcmFnZ2FibGUgY29udGFpbmVkIGluCiAgLy8gc2Nyb2xsYWJsZSBlbGVtZW50 cwogIGluY2x1ZGVTY3JvbGxPZmZzZXRzOiBmYWxzZSwKCiAgLy8gbXVzdCBiZSBj YWxsZWQgYmVmb3JlIGNhbGxpbmcgd2l0aGluSW5jbHVkaW5nU2Nyb2xsb2Zmc2V0 LCBldmVyeSB0aW1lIHRoZQogIC8vIHBhZ2UgaXMgc2Nyb2xsZWQKICBwcmVwYXJl OiBmdW5jdGlvbigpIHsKICAgIHRoaXMuZGVsdGFYID0gIHdpbmRvdy5wYWdlWE9m ZnNldAogICAgICAgICAgICAgICAgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50 LnNjcm9sbExlZnQKICAgICAgICAgICAgICAgIHx8IGRvY3VtZW50LmJvZHkuc2Ny b2xsTGVmdAogICAgICAgICAgICAgICAgfHwgMDsKICAgIHRoaXMuZGVsdGFZID0g IHdpbmRvdy5wYWdlWU9mZnNldAogICAgICAgICAgICAgICAgfHwgZG9jdW1lbnQu ZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcAogICAgICAgICAgICAgICAgfHwgZG9j dW1lbnQuYm9keS5zY3JvbGxUb3AKICAgICAgICAgICAgICAgIHx8IDA7CiAgfSwK CiAgLy8gY2FjaGVzIHgveSBjb29yZGluYXRlIHBhaXIgdG8gdXNlIHdpdGggb3Zl cmxhcAogIHdpdGhpbjogZnVuY3Rpb24oZWxlbWVudCwgeCwgeSkgewogICAgaWYg KHRoaXMuaW5jbHVkZVNjcm9sbE9mZnNldHMpCiAgICAgIHJldHVybiB0aGlzLndp dGhpbkluY2x1ZGluZ1Njcm9sbG9mZnNldHMoZWxlbWVudCwgeCwgeSk7CiAgICB0 aGlzLnhjb21wID0geDsKICAgIHRoaXMueWNvbXAgPSB5OwogICAgdGhpcy5vZmZz ZXQgPSBFbGVtZW50LmN1bXVsYXRpdmVPZmZzZXQoZWxlbWVudCk7CgogICAgcmV0 dXJuICh5ID49IHRoaXMub2Zmc2V0WzFdICYmCiAgICAgICAgICAgIHkgPCAgdGhp cy5vZmZzZXRbMV0gKyBlbGVtZW50Lm9mZnNldEhlaWdodCAmJgogICAgICAgICAg ICB4ID49IHRoaXMub2Zmc2V0WzBdICYmCiAgICAgICAgICAgIHggPCAgdGhpcy5v ZmZzZXRbMF0gKyBlbGVtZW50Lm9mZnNldFdpZHRoKTsKICB9LAoKICB3aXRoaW5J bmNsdWRpbmdTY3JvbGxvZmZzZXRzOiBmdW5jdGlvbihlbGVtZW50LCB4LCB5KSB7 CiAgICB2YXIgb2Zmc2V0Y2FjaGUgPSBFbGVtZW50LmN1bXVsYXRpdmVTY3JvbGxP ZmZzZXQoZWxlbWVudCk7CgogICAgdGhpcy54Y29tcCA9IHggKyBvZmZzZXRjYWNo ZVswXSAtIHRoaXMuZGVsdGFYOwogICAgdGhpcy55Y29tcCA9IHkgKyBvZmZzZXRj YWNoZVsxXSAtIHRoaXMuZGVsdGFZOwogICAgdGhpcy5vZmZzZXQgPSBFbGVtZW50 LmN1bXVsYXRpdmVPZmZzZXQoZWxlbWVudCk7CgogICAgcmV0dXJuICh0aGlzLnlj b21wID49IHRoaXMub2Zmc2V0WzFdICYmCiAgICAgICAgICAgIHRoaXMueWNvbXAg PCAgdGhpcy5vZmZzZXRbMV0gKyBlbGVtZW50Lm9mZnNldEhlaWdodCAmJgogICAg ICAgICAgICB0aGlzLnhjb21wID49IHRoaXMub2Zmc2V0WzBdICYmCiAgICAgICAg ICAgIHRoaXMueGNvbXAgPCAgdGhpcy5vZmZzZXRbMF0gKyBlbGVtZW50Lm9mZnNl dFdpZHRoKTsKICB9LAoKICAvLyB3aXRoaW4gbXVzdCBiZSBjYWxsZWQgZGlyZWN0 bHkgYmVmb3JlCiAgb3ZlcmxhcDogZnVuY3Rpb24obW9kZSwgZWxlbWVudCkgewog ICAgaWYgKCFtb2RlKSByZXR1cm4gMDsKICAgIGlmIChtb2RlID09ICd2ZXJ0aWNh bCcpCiAgICAgIHJldHVybiAoKHRoaXMub2Zmc2V0WzFdICsgZWxlbWVudC5vZmZz ZXRIZWlnaHQpIC0gdGhpcy55Y29tcCkgLwogICAgICAgIGVsZW1lbnQub2Zmc2V0 SGVpZ2h0OwogICAgaWYgKG1vZGUgPT0gJ2hvcml6b250YWwnKQogICAgICByZXR1 cm4gKCh0aGlzLm9mZnNldFswXSArIGVsZW1lbnQub2Zmc2V0V2lkdGgpIC0gdGhp cy54Y29tcCkgLwogICAgICAgIGVsZW1lbnQub2Zmc2V0V2lkdGg7CiAgfSwKCiAg Ly8gRGVwcmVjYXRpb24gbGF5ZXIgLS0gdXNlIG5ld2VyIEVsZW1lbnQgbWV0aG9k cyBub3cgKDEuNS4yKS4KCiAgY3VtdWxhdGl2ZU9mZnNldDogRWxlbWVudC5NZXRo b2RzLmN1bXVsYXRpdmVPZmZzZXQsCgogIHBvc2l0aW9uZWRPZmZzZXQ6IEVsZW1l bnQuTWV0aG9kcy5wb3NpdGlvbmVkT2Zmc2V0LAoKICBhYnNvbHV0aXplOiBmdW5j dGlvbihlbGVtZW50KSB7CiAgICBQb3NpdGlvbi5wcmVwYXJlKCk7CiAgICByZXR1 cm4gRWxlbWVudC5hYnNvbHV0aXplKGVsZW1lbnQpOwogIH0sCgogIHJlbGF0aXZp emU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIFBvc2l0aW9uLnByZXBhcmUoKTsK ICAgIHJldHVybiBFbGVtZW50LnJlbGF0aXZpemUoZWxlbWVudCk7CiAgfSwKCiAg cmVhbE9mZnNldDogRWxlbWVudC5NZXRob2RzLmN1bXVsYXRpdmVTY3JvbGxPZmZz ZXQsCgogIG9mZnNldFBhcmVudDogRWxlbWVudC5NZXRob2RzLmdldE9mZnNldFBh cmVudCwKCiAgcGFnZTogRWxlbWVudC5NZXRob2RzLnZpZXdwb3J0T2Zmc2V0LAoK ICBjbG9uZTogZnVuY3Rpb24oc291cmNlLCB0YXJnZXQsIG9wdGlvbnMpIHsKICAg IG9wdGlvbnMgPSBvcHRpb25zIHx8IHsgfTsKICAgIHJldHVybiBFbGVtZW50LmNs b25lUG9zaXRpb24odGFyZ2V0LCBzb3VyY2UsIG9wdGlvbnMpOwogIH0KfTsKCi8q LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKaWYgKCFkb2N1bWVudC5nZXRF bGVtZW50c0J5Q2xhc3NOYW1lKSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NO YW1lID0gZnVuY3Rpb24oaW5zdGFuY2VNZXRob2RzKXsKICBmdW5jdGlvbiBpdGVy KG5hbWUpIHsKICAgIHJldHVybiBuYW1lLmJsYW5rKCkgPyBudWxsIDogIltjb250 YWlucyhjb25jYXQoJyAnLCBAY2xhc3MsICcgJyksICcgIiArIG5hbWUgKyAiICcp XSI7CiAgfQoKICBpbnN0YW5jZU1ldGhvZHMuZ2V0RWxlbWVudHNCeUNsYXNzTmFt ZSA9IFByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuWFBhdGggPwogIGZ1bmN0aW9u KGVsZW1lbnQsIGNsYXNzTmFtZSkgewogICAgY2xhc3NOYW1lID0gY2xhc3NOYW1l LnRvU3RyaW5nKCkuc3RyaXAoKTsKICAgIHZhciBjb25kID0gL1xzLy50ZXN0KGNs YXNzTmFtZSkgPyAkdyhjbGFzc05hbWUpLm1hcChpdGVyKS5qb2luKCcnKSA6IGl0 ZXIoY2xhc3NOYW1lKTsKICAgIHJldHVybiBjb25kID8gZG9jdW1lbnQuX2dldEVs ZW1lbnRzQnlYUGF0aCgnLi8vKicgKyBjb25kLCBlbGVtZW50KSA6IFtdOwogIH0g OiBmdW5jdGlvbihlbGVtZW50LCBjbGFzc05hbWUpIHsKICAgIGNsYXNzTmFtZSA9 IGNsYXNzTmFtZS50b1N0cmluZygpLnN0cmlwKCk7CiAgICB2YXIgZWxlbWVudHMg PSBbXSwgY2xhc3NOYW1lcyA9ICgvXHMvLnRlc3QoY2xhc3NOYW1lKSA/ICR3KGNs YXNzTmFtZSkgOiBudWxsKTsKICAgIGlmICghY2xhc3NOYW1lcyAmJiAhY2xhc3NO YW1lKSByZXR1cm4gZWxlbWVudHM7CgogICAgdmFyIG5vZGVzID0gJChlbGVtZW50 KS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpOwogICAgY2xhc3NOYW1lID0gJyAn ICsgY2xhc3NOYW1lICsgJyAnOwoKICAgIGZvciAodmFyIGkgPSAwLCBjaGlsZCwg Y247IGNoaWxkID0gbm9kZXNbaV07IGkrKykgewogICAgICBpZiAoY2hpbGQuY2xh c3NOYW1lICYmIChjbiA9ICcgJyArIGNoaWxkLmNsYXNzTmFtZSArICcgJykgJiYg KGNuLmluY2x1ZGUoY2xhc3NOYW1lKSB8fAogICAgICAgICAgKGNsYXNzTmFtZXMg JiYgY2xhc3NOYW1lcy5hbGwoZnVuY3Rpb24obmFtZSkgewogICAgICAgICAgICBy ZXR1cm4gIW5hbWUudG9TdHJpbmcoKS5ibGFuaygpICYmIGNuLmluY2x1ZGUoJyAn ICsgbmFtZSArICcgJyk7CiAgICAgICAgICB9KSkpKQogICAgICAgIGVsZW1lbnRz LnB1c2goRWxlbWVudC5leHRlbmQoY2hpbGQpKTsKICAgIH0KICAgIHJldHVybiBl bGVtZW50czsKICB9OwoKICByZXR1cm4gZnVuY3Rpb24oY2xhc3NOYW1lLCBwYXJl bnRFbGVtZW50KSB7CiAgICByZXR1cm4gJChwYXJlbnRFbGVtZW50IHx8IGRvY3Vt ZW50LmJvZHkpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoY2xhc3NOYW1lKTsKICB9 Owp9KEVsZW1lbnQuTWV0aG9kcyk7CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKi8KCkVsZW1lbnQuQ2xhc3NOYW1lcyA9IENsYXNzLmNyZWF0ZSgpOwpFbGVt ZW50LkNsYXNzTmFtZXMucHJvdG90eXBlID0gewogIGluaXRpYWxpemU6IGZ1bmN0 aW9uKGVsZW1lbnQpIHsKICAgIHRoaXMuZWxlbWVudCA9ICQoZWxlbWVudCk7CiAg fSwKCiAgX2VhY2g6IGZ1bmN0aW9uKGl0ZXJhdG9yKSB7CiAgICB0aGlzLmVsZW1l bnQuY2xhc3NOYW1lLnNwbGl0KC9ccysvKS5zZWxlY3QoZnVuY3Rpb24obmFtZSkg ewogICAgICByZXR1cm4gbmFtZS5sZW5ndGggPiAwOwogICAgfSkuX2VhY2goaXRl cmF0b3IpOwogIH0sCgogIHNldDogZnVuY3Rpb24oY2xhc3NOYW1lKSB7CiAgICB0 aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NOYW1lOwogIH0sCgogIGFkZDog ZnVuY3Rpb24oY2xhc3NOYW1lVG9BZGQpIHsKICAgIGlmICh0aGlzLmluY2x1ZGUo Y2xhc3NOYW1lVG9BZGQpKSByZXR1cm47CiAgICB0aGlzLnNldCgkQSh0aGlzKS5j b25jYXQoY2xhc3NOYW1lVG9BZGQpLmpvaW4oJyAnKSk7CiAgfSwKCiAgcmVtb3Zl OiBmdW5jdGlvbihjbGFzc05hbWVUb1JlbW92ZSkgewogICAgaWYgKCF0aGlzLmlu Y2x1ZGUoY2xhc3NOYW1lVG9SZW1vdmUpKSByZXR1cm47CiAgICB0aGlzLnNldCgk QSh0aGlzKS53aXRob3V0KGNsYXNzTmFtZVRvUmVtb3ZlKS5qb2luKCcgJykpOwog IH0sCgogIHRvU3RyaW5nOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiAkQSh0aGlz KS5qb2luKCcgJyk7CiAgfQp9OwoKT2JqZWN0LmV4dGVuZChFbGVtZW50LkNsYXNz TmFtZXMucHJvdG90eXBlLCBFbnVtZXJhYmxlKTsKCi8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0qLwoKRWxlbWVudC5hZGRNZXRob2RzKCk7 ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=main.js Content-Type: application/x-javascript; charset=UTF-8; name=main.js Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/js/main.js Content-Transfer-Encoding: Base64 Ly8gRm9yIHRoZSBuYXZpZ2F0aW9uIGRyb3Bkb3duIG1lbnVzIGFuZCBSZWxhdGVk IENvbnRlbnQgaG92ZXJzOgovLyBzY3JpcHQgdG8gbWFrZSBJRSB0byByZWNvZ25p emUgaG92ZXIgc3RhdGUgb3ZlciBsaXN0IGl0ZW1zCi8vIGJvcnJvd2VkIGZyb20g dGhlICJTdWNrZXJmaXNoIERyb3Bkb3ducyIKLy8gKHd3dy5hbGlzdGFwYXJ0LmNv bS9hcnRpY2xlcy9kcm9wZG93bnMpCnN0YXJ0TGlzdCA9IGZ1bmN0aW9uKCkgewoJ aWYgKGRvY3VtZW50LmFsbCYmZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQpIHsKCQkv LyBmb3IgZHJvcGRvd24gbmF2CgkJaWYgKCQoJ25hdicpKSB7CgkJCW5hdlJvb3Qg PSAkKCduYXYnKTsKCQkJZm9yIChpPTA7IGk8bmF2Um9vdC5jaGlsZE5vZGVzLmxl bmd0aDsgaSsrKSB7CgkJCQlub2RlID0gbmF2Um9vdC5jaGlsZE5vZGVzW2ldOwoJ CQkJaWYgKG5vZGUubm9kZU5hbWU9PSJMSSIpIHsKCQkJCQlub2RlLm9ubW91c2Vv dmVyPWZ1bmN0aW9uKCkgewoJCQkJCQl0aGlzLmNsYXNzTmFtZSs9IiBvdmVyIjsK CQkJCQl9CgkJCQkJbm9kZS5vbm1vdXNlb3V0PWZ1bmN0aW9uKCkgewoJCQkJCQl0 aGlzLmNsYXNzTmFtZT10aGlzLmNsYXNzTmFtZS5yZXBsYWNlKCIgb3ZlciIsICIi KTsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgkJLy8gZm9yIFJlbGF0ZWQgQ29udGVu dCBob3ZlcnMgYW5kCgkJaWYgKCQoJ3JlbGF0ZWRBcnRpY2xlcycpKSB7CgkJCXJj Um9vdCA9ICQoJ3JlbGF0ZWRBcnRpY2xlcycpOwoJCQlmb3IgKGk9MDsgaTxyY1Jv b3QuY2hpbGROb2Rlcy5sZW5ndGg7IGkrKykgewoJCQkJbm9kZSA9IHJjUm9vdC5j aGlsZE5vZGVzW2ldOwoJCQkJaWYgKG5vZGUubm9kZU5hbWU9PSJMSSIpIHsKCQkJ CQlub2RlLm9ubW91c2VvdmVyPWZ1bmN0aW9uKCkgewoJCQkJCQl0aGlzLmNsYXNz TmFtZSs9IiBvdmVyIjsKCQkJCQl9CgkJCQkJbm9kZS5vbm1vdXNlb3V0PWZ1bmN0 aW9uKCkgewoJCQkJCQl0aGlzLmNsYXNzTmFtZT10aGlzLmNsYXNzTmFtZS5yZXBs YWNlKCIgb3ZlciIsICIiKTsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgkJLy8gZm9y IENpdGVkIEJ5IGhvdmVycwoJCWlmICgkKCdjaXRlZEJ5JykpIHsKCQkJY2JSb290 ID0gJCgnY2l0ZWRCeScpOwoJCQlmb3IgKGk9MDsgaTxjYlJvb3QuY2hpbGROb2Rl cy5sZW5ndGg7IGkrKykgewoJCQkJbm9kZSA9IGNiUm9vdC5jaGlsZE5vZGVzW2ld OwoJCQkJaWYgKG5vZGUubm9kZU5hbWU9PSJMSSIpIHsKCQkJCQlub2RlLm9ubW91 c2VvdmVyPWZ1bmN0aW9uKCkgewoJCQkJCQl0aGlzLmNsYXNzTmFtZSs9IiBvdmVy IjsKCQkJCQl9CgkJCQkJbm9kZS5vbm1vdXNlb3V0PWZ1bmN0aW9uKCkgewoJCQkJ CQl0aGlzLmNsYXNzTmFtZT10aGlzLmNsYXNzTmFtZS5yZXBsYWNlKCIgb3ZlciIs ICIiKTsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9Cgl9Cn0KRXZlbnQub2JzZXJ2ZSh3 aW5kb3csICJsb2FkIiwgc3RhcnRMaXN0KTsKCi8vIFNhbWUgYXMgYWJvdmUsIGJ1 dCBmb3IgdGhlIFJlbGF0ZWQgQ29udGVudCBob3ZlcnMKZnVuY3Rpb24gaWVSZWxh dGVkICgpIHsKaWYgKGRvY3VtZW50LmFsbCYmZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQpIHsKbmF2Um9vdCA9ICQoJ3JlbGF0ZWRBcnRpY2xlcycpOwpmb3IgKGk9MDsg aTxuYXZSb290LmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHsKbm9kZSA9IG5hdlJv b3QuY2hpbGROb2Rlc1tpXTsKaWYgKG5vZGUubm9kZU5hbWU9PSJMSSIpIHsKbm9k ZS5vbm1vdXNlb3Zlcj1mdW5jdGlvbigpIHsKdGhpcy5jbGFzc05hbWUrPSIgb3Zl ciI7CiAgfQogIG5vZGUub25tb3VzZW91dD1mdW5jdGlvbigpIHsKICB0aGlzLmNs YXNzTmFtZT10aGlzLmNsYXNzTmFtZS5yZXBsYWNlKCIgb3ZlciIsICIiKTsKICAg fQogICB9CiAgfQogfQp9CgovLyBGb3IgY2xlYXJpbmcvcmVwb3B1bGF0aW5nIHRo ZSBzZWFyY2ggaW5wdXQgYm94LAovLyBjaXRhdGlvbiBqdW1wIGlucHV0IGJveGVz LCBhbmQgRE9JIGlucHV0IGJveGVzCi8vIEF0eXBvbiB2ZXJzaW9uCmZ1bmN0aW9u IGZsaXBEZWZhdWx0KGZpZWxkKSB7CiAgICBpZiAoIWZpZWxkLmRlZmF1bHRWYWx1 ZSkgZmllbGQuZGVmYXVsdFZhbHVlID0gZmllbGQudmFsdWU7CiAgICBpZiAoZmll bGQudmFsdWUgPT0gZmllbGQuZGVmYXVsdFZhbHVlKSBmaWVsZC52YWx1ZSA9ICIi OwogICAgZWxzZSBpZiAoZmllbGQudmFsdWUgPT0gIiIpIGZpZWxkLnZhbHVlID0g ZmllbGQuZGVmYXVsdFZhbHVlOwp9CgpmdW5jdGlvbiBjaGVja0lucHV0KGFUeXBl KSB7Cgl2YXIgaW5wdXRzID0gKGFUeXBlID09ICdhZHZhbmNlZCcpID8KCQkJCSBb J2FkdlNlYXJjaFRleHQnLCAnYWR2VGl0bGUnLCAnYWR2QXV0aG9yJywgJ2FkdkFi c3RyYWN0JywgJ2FkdkZpZ3VyZSddIDoKCQkJCSBbJ3NlYXJjaFRleHQnXTsKCXZh ciB2YWxpZCA9IGZhbHNlOwoJZm9yICh2YXIgaT0wOyBpPGlucHV0cy5sZW5ndGg7 IGkrKykgewoJCXZhciBpbnB1dCA9ICQoaW5wdXRzW2ldKTsKCQl2YWxpZCB8PSBp bnB1dCAmJgoJCQkJIChpbnB1dC50eXBlID09ICd0ZXh0JykgJiYKCQkJCSAoaW5w dXQudmFsdWUgIT0gJ0VudGVyIFRpdGxlLCBLZXl3b3JkcywgQXV0aG9ycywgb3Ig RE9JJykgJiYKCQkJCSAoaW5wdXQudmFsdWUucmVwbGFjZSgvXlxzK3xccyskL2cs JycpLmxlbmd0aCA+IDApOwoJfQoJaWYgKCEgdmFsaWQpIHsKCQlhbGVydCgiRW50 ZXIgc2VhcmNoIGNyaXRlcmlhLiIpOwoJCXJldHVybiBmYWxzZTsKCX0KCXJldHVy biB0cnVlOwp9CgpmdW5jdGlvbiBzdWJtaXRBZHZTZWFyY2goKSB7CglpZiAoY2hl Y2tJbnB1dCgnYWR2YW5jZWQnKSkgewoJCWRvY3VtZW50LmFkdlNlYXJjaC5zdWJt aXQoKTsKCQlyZXR1cm4gdHJ1ZTsKCX0KCXJldHVybiBmYWxzZTsKfQoKLy8gRm9y IGNsZWFyaW5nL3JlcG9wdWxhdGluZyB0aGUgc2VhcmNoIGlucHV0IGJveCwKLy8g Y2l0YXRpb24ganVtcCBpbnB1dCBib3hlcywgYW5kIERPSSBpbnB1dCBib3hlcwov L3NvbWUgQXR5cG9uIG5hbWUgY2hhbmdlcy4uCmZ1bmN0aW9uIGV2YWxCb3godGV4 dGJveCkgewogICAgaWYgKHRleHRib3g9PSJzZWFyY2hUZXJtcyIpIHsKCQl0ZXh0 Ym94PWRvY3VtZW50LnNlYXJjaEpvdXJuYWwuc2VhcmNoVGVybXM7CgkJaWYgKHRl eHRib3gudmFsdWU9PSJFbnRlciBUaXRsZSwgS2V5d29yZHMsIEF1dGhvcnMsIG9y IERPSSIpIHRleHRib3gudmFsdWU9IiI7CgkJZWxzZSBpZiAodGV4dGJveC52YWx1 ZT09IiIpIHRleHRib3gudmFsdWU9IkVudGVyIFRpdGxlLCBLZXl3b3JkcywgQXV0 aG9ycywgb3IgRE9JIjsKCX0KCWVsc2UgaWYgKHRleHRib3g9PSJxdWlja0xpbmtW b2x1bWUiKSB7CgkJdGV4dGJveD1kb2N1bWVudC5jaXRhdGlvbkp1bXAucXVpY2tM aW5rVm9sdW1lOwoJCWlmICh0ZXh0Ym94LnZhbHVlPT0iVm9sICMiKSB0ZXh0Ym94 LnZhbHVlPSIiOwoJCWVsc2UgaWYgKHRleHRib3gudmFsdWU9PSIiKSB0ZXh0Ym94 LnZhbHVlPSJWb2wgIyI7Cgl9CgllbHNlIGlmICh0ZXh0Ym94PT0icXVpY2tMaW5r UGFnZSIpIHsKCQl0ZXh0Ym94PWRvY3VtZW50LmNpdGF0aW9uSnVtcC5xdWlja0xp bmtQYWdlOwoJCWlmICh0ZXh0Ym94LnZhbHVlPT0iUGFnZSAjIikgdGV4dGJveC52 YWx1ZT0iIjsKCQllbHNlIGlmICh0ZXh0Ym94LnZhbHVlPT0iIikgdGV4dGJveC52 YWx1ZT0iUGFnZSAjIjsKCX0KCWVsc2UgaWYgKHRleHRib3g9PSJkb2kiKSB7CgkJ dGV4dGJveD1kb2N1bWVudC5jaXRhdGlvbkp1bXAuZG9pOwoJCWlmICh0ZXh0Ym94 LnZhbHVlPT0iIikgdGV4dGJveC52YWx1ZT0iMTAuMTAyMS8iOwoJfQoJZWxzZSBp ZiAodGV4dGJveD09InVzZXJOYW1lIikgewoJCXRleHRib3g9ZG9jdW1lbnQuc2ln bkluLnVzZXJOYW1lOwoJCWlmICh0ZXh0Ym94LnZhbHVlPT0iVXNlcm5hbWUiKSB0 ZXh0Ym94LnZhbHVlPSIiOwoJCWVsc2UgaWYgKHRleHRib3gudmFsdWU9PSIiKSB0 ZXh0Ym94LnZhbHVlPSJVc2VybmFtZSI7Cgl9CgllbHNlIGlmICh0ZXh0Ym94PT0i cGFzc3dvcmQiKSB7CgkJdGV4dGJveD1kb2N1bWVudC5zaWduSW4ucGFzc3dvcmQ7 CgkJaWYgKHRleHRib3gudmFsdWU9PSJQYXNzd29yZCIpIHRleHRib3gudmFsdWU9 IiI7CgkJZWxzZSBpZiAodGV4dGJveC52YWx1ZT09IiIpIHRleHRib3gudmFsdWU9 IlBhc3N3b3JkIjsKCX0KfQoKLy8gYXR5cG9uIGNoYW5nZQpmdW5jdGlvbiBxdWlj a0xpbmtTdWJtaXQoKSB7CiAgICB2YXIgb2sgPSB0cnVlOwogICAgaWYgKGRvY3Vt ZW50LmNpdGF0aW9uSnVtcC5kb2kudmFsdWUgPT0gIjEwLjEwMjEvIikgewogICAg ICAgIGlmIChkb2N1bWVudC5jaXRhdGlvbkp1bXAucXVpY2tMaW5rSm91cm5hbC52 YWx1ZSA9PSAiIikgewogICAgICAgICAgICBvayA9IGZhbHNlOwogICAgICAgICAg ICBhbGVydCgiUGxlYXNlIHNwZWNpZnkgRE9JIG9yIGEgam91cm5hbCIpOwogICAg ICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQuY2l0YXRpb25KdW1wLnF1aWNrTGlua1Zv bHVtZS52YWx1ZSA9PSAiVm9sICMiKSB7CiAgICAgICAgICAgIG9rID0gZmFsc2U7 CiAgICAgICAgICAgIGFsZXJ0KCJQbGVhc2Ugc3BlY2lmeSBET0kgb3Igdm9sdW1l IGFuZCBwYWdlIG51bWJlcnMiKTsKICAgICAgICB9IGVsc2UgaWYgKGRvY3VtZW50 LmNpdGF0aW9uSnVtcC5xdWlja0xpbmtQYWdlLnZhbHVlID09ICJQYWdlICMiKSB7 CiAgICAgICAgICAgIG9rID0gZmFsc2U7CiAgICAgICAgICAgIGFsZXJ0KCJQbGVh c2Ugc3BlY2lmeSBET0kgb3Igdm9sdW1lIGFuZCBwYWdlIG51bWJlcnMiKTsKICAg ICAgICB9CiAgICAgICAgaWYgKG9rKQogICAgICAgICAgICBkb2N1bWVudC5jaXRh dGlvbkp1bXAuZG9pLnZhbHVlID0gIiI7CiAgICB9CiAgICBpZiAob2spIHsKLy8g ICAgICAgIGRvY3VtZW50LmZvcm1zWydjaXRhdGlvbkp1bXAnXS5zdWJtaXQoKTsK ICAgIH0KICAgIHJldHVybiBvazsKfQoKLy8gRm9yIHNob3dpbmcvaGlkaW5nIHRo ZSBKb3VybmFsIExpc3QgbWVudSBsYXllcgpmdW5jdGlvbiB0b2dnbGVBWigpIHsK CS8vIGZpcnN0IHRlc3QgZm9yIEV4cGxvcmVyIDYgYW5kIGJlbG93IHRvIGZpeCBh IGJ1ZyBpbiB0aGF0IGNyYXAgYnJvd3NlcgoJdmFyIHZlcnNpb249MDsKCXZhciBu ZWVkZml4PTA7CglpZiAoUHJvdG90eXBlLkJyb3dzZXIuSUUpIHsKCQlpZiAobmF2 aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZigiTVNJRSIpIT0tMSkgewoJCQl2YXIg dGVtcD1uYXZpZ2F0b3IuYXBwVmVyc2lvbi5zcGxpdCgiTVNJRSIpOwoJCQl2YXIg dmVyc2lvbj1wYXJzZUZsb2F0KHRlbXBbMV0pOwoJCX0KCQlpZiAodmVyc2lvbiA8 IDcpIG5lZWRmaXg9MTsKCX0KCgkvLyBzaG93IG9yIGhpZGUgdGhlIFB1YnMgU2Vs ZWN0IGxheWVyCgl2YXIgYm94PSQoJ3B1YnNTZWxlY3RvcicpOwoJdmFyIGJnPSBu ZXcgQXJyYXkoKTsKCWJnWzBdPSQoJ2hlYWRlcicpOwoJYmdbMV09JCgnbWFpbkJv ZHknKTsKCWJnWzJdPSQoJ3BhZ2VGb290ZXItd3JhcCcpOwoJdmFyIG49MDsKCglp ZiAoYm94LnN0eWxlKSB7CgkJaWYgKGJveC5zdHlsZS5kaXNwbGF5IT0nJykgewoJ CQlpZiAobmVlZGZpeD09MSkgcHVic1NlbGVjdElFZml4KCdoaWRlJyk7CgoJCQl3 aGlsZSAoYmdbbl0pIHsKCQkJCWJnW25dLmNoYW5nZU9wYWNpdHk9IjAuNTAiOwoJ CQkJYmdbbl0uc3R5bGUuS0hUTUxPcGFjaXR5PSIwLjUwIjsKCQkJCWJnW25dLnN0 eWxlLm9wYWNpdHk9IjAuNTAiOwoJCQkJbisrOwoJCQl9CgkJCUVmZmVjdC5BcHBl YXIoYm94LCB7ZHVyYXRpb246MC41fSk7CgkJfQoJCWVsc2UgewoJCQlpZiAobmVl ZGZpeD09MSkgcHVic1NlbGVjdElFZml4KCdzaG93Jyk7CgoJCQl3aGlsZSAoYmdb bl0pIHsKCQkJCWJnW25dLnN0eWxlLk1vek9wYWNpdHk9IjEiOwoJCQkJYmdbbl0u c3R5bGUuS0hUTUxPcGFjaXR5PSIxIjsKCQkJCWJnW25dLnN0eWxlLm9wYWNpdHk9 IjEiOwoJCQkJbisrOwoJCQl9CgkJCUVmZmVjdC5GYWRlKGJveCwge2R1cmF0aW9u OjAuNX0pOwoJCX0KCX0KfQovLyBjb21wYW5pb24gc2NyaXB0IHRvIG1ha2UgcHVi c1NlbGVjdCgpIHdvcmsgaW4gRXhwbG9yZXIgNiBhbmQgYmVsb3cKLy8gd2l0aG91 dCBoYXZpbmcgdGhlIGZvcm0gc2VsZWN0IGJveGVzIGFwcGVhciB0aHJvdWdoIHRo ZSBQdWJzIFNlbGVjdCBsYXllcgpmdW5jdGlvbiBwdWJzU2VsZWN0SUVmaXgoaGlk ZU9yU2hvdykgewoJLy8gZm9yIEJyb3dzZSBCeSBJc3N1ZSBib3hlcyBvbiBqb3Vy bmFsLXNwZWNpZmljIHBhZ2VzCglpZiAoJCgnaW5EZWNhZGUnKSkgewoJCXZhciBo aWRlQnJvd3NlMT0kKCdpbkRlY2FkZScpOwoJCXZhciBoaWRlQnJvd3NlMj0kKCdp blZvbHVtZScpOwoJCXZhciBoaWRlQnJvd3NlMz0kKCdpbklzc3VlJyk7CgkJaWYg KGhpZGVPclNob3c9PSJoaWRlIikgewoJCQloaWRlQnJvd3NlMS5zdHlsZS52aXNp YmlsaXR5PSJoaWRkZW4iOwoJCQloaWRlQnJvd3NlMi5zdHlsZS52aXNpYmlsaXR5 PSJoaWRkZW4iOwoJCQloaWRlQnJvd3NlMy5zdHlsZS52aXNpYmlsaXR5PSJoaWRk ZW4iOwoJCX0KCQllbHNlIHsKCQkJaGlkZUJyb3dzZTEuc3R5bGUudmlzaWJpbGl0 eT0idmlzaWJsZSI7CgkJCWhpZGVCcm93c2UyLnN0eWxlLnZpc2liaWxpdHk9InZp c2libGUiOwoJCQloaWRlQnJvd3NlMy5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxl IjsKCQl9Cgl9CgkvLyBmb3Igam91cm5hbCBzZWxlY3RvciBvbiBBUlJDIHBhZ2Vz CglpZiAoJCgnYXJyY0pvdXJuYWxJbmZvJykpIHsKCQl2YXIgYXJyYz0kKCdhcnJj Sm91cm5hbEluZm8nKTsKCQlpZiAoaGlkZU9yU2hvdz09ImhpZGUiKSB7CgkJCWFy cmMuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIjsKCQl9CgkJZWxzZSBhcnJjLnN0 eWxlLnZpc2liaWxpdHk9InZpc2libGUiOwoJfQoJLy8gZm9yIGFjY291bnQgc2Vs ZWN0b3Igb24gTGliLiBBZG1pbi4gcGFnZXMKCWlmICgkKCdsaWJBY2NvdW50Jykp IHsKCQl2YXIgYWNjb3VudD0kKCdsaWJBY2NvdW50Jyk7CgkJaWYgKGhpZGVPclNo b3c9PSJoaWRlIikgewoJCQlhY2NvdW50LnN0eWxlLnZpc2liaWxpdHk9ImhpZGRl biI7CgkJfQoJCWVsc2UgYWNjb3VudC5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxl IjsKCX0KCS8vIGZvciBtb250aC95ZWFyIG5hdmlnYXRpb24gb24gT25saW5lIE5l d3MgQXJjaGl2ZSBhbmQgbmV3c2xldHRlcnMKCWlmICgkKCdtb250aFllYXJOYXYn KSkgewoJCXZhciBhY2NvdW50PSQoJ21vbnRoWWVhck5hdicpOwoJCWlmIChoaWRl T3JTaG93PT0iaGlkZSIpIHsKCQkJYWNjb3VudC5zdHlsZS52aXNpYmlsaXR5PSJo aWRkZW4iOwoJCX0KCQllbHNlIGFjY291bnQuc3R5bGUudmlzaWJpbGl0eT0idmlz aWJsZSI7Cgl9Cn0KCi8vIEFub3RoZXIgcGFpciBvZiBzY3JpcHRzIHRvIGZpeCBJ RSdzIHByb2JsZW0gd2l0aCBzZWxlY3QgYm94ZXMgc2hvd2luZyB0aHJvdWdoIGxh eWVycwovLyBUaGlzIG9uZSBpcyBmb3IgdGhlIEF1dGhvciBJbmRleCBwYWdlCmZ1 bmN0aW9uIGZpeEFJNElFKHN0YXRlKSB7CglpZiAoUHJvdG90eXBlLkJyb3dzZXIu SUUpIHsKCQlpZiAobmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZigiTVNJRSIp IT0tMSkgewoJCQl2YXIgdGVtcD1uYXZpZ2F0b3IuYXBwVmVyc2lvbi5zcGxpdCgi TVNJRSIpOwoJCQl2YXIgdmVyc2lvbj1wYXJzZUZsb2F0KHRlbXBbMV0pOwoJCX0K CQlpZiAodmVyc2lvbiA8IDcpIHsKCQkJaWYgKCQoJ2FpVm9sSnVtcCcpKSB7CgkJ CQl2YXIgZm9ybT0kKCdhaVZvbEp1bXAnKTsKCQkJCXZhciBzZWxlY3QxPWZvcm0u Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NlbGVjdCcpWzBdLnN0eWxlOwoJCQkJdmFy IHNlbGVjdDI9Zm9ybS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0JylbMV0u c3R5bGU7CgkJCQlpZiAoc3RhdGU9PSJvbiIpIHsKCQkJCQlzZWxlY3QxLnZpc2li aWxpdHk9ImhpZGRlbiI7CgkJCQkJc2VsZWN0Mi52aXNpYmlsaXR5PSJoaWRkZW4i OwoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJc2VsZWN0MS52aXNpYmlsaXR5PSJ2aXNp YmxlIjsKCQkJCQlzZWxlY3QyLnZpc2liaWxpdHk9InZpc2libGUiOwoJCQkJfQoJ CQl9CgkJfQoJfQp9Ci8vIFRoaXMgb25lIGlzIG9ubHkgZm9yIHRoZSBPbmxpbmUg TmV3cyBBcmNoaXZlCmZ1bmN0aW9uIGZpeEFyY2hpdmU0SUUoc3RhdGUpIHsKCWlm IChQcm90b3R5cGUuQnJvd3Nlci5JRSkgewoJCWlmIChuYXZpZ2F0b3IuYXBwVmVy c2lvbi5pbmRleE9mKCJNU0lFIikhPS0xKSB7CgkJCXZhciB0ZW1wPW5hdmlnYXRv ci5hcHBWZXJzaW9uLnNwbGl0KCJNU0lFIik7CgkJCXZhciB2ZXJzaW9uPXBhcnNl RmxvYXQodGVtcFsxXSk7CgkJfQoJCWlmICh2ZXJzaW9uIDwgNykgewoJCQlpZiAo JCgnbmV3c0FyY2hpdmVOYXYnKSkgewoJCQkJdmFyIGZvcm09JCgnbmV3c0FyY2hp dmVOYXYnKTsKCQkJCXZhciBzZWxlY3QxPWZvcm0uZ2V0RWxlbWVudHNCeVRhZ05h bWUoJ3NlbGVjdCcpWzBdLnN0eWxlOwoJCQkJdmFyIHNlbGVjdDI9Zm9ybS5nZXRF bGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0JylbMV0uc3R5bGU7CgkJCQlpZiAoc3Rh dGU9PSJvbiIpIHsKCQkJCQlzZWxlY3QxLnZpc2liaWxpdHk9ImhpZGRlbiI7CgkJ CQkJc2VsZWN0Mi52aXNpYmlsaXR5PSJoaWRkZW4iOwoJCQkJfQoJCQkJZWxzZSB7 CgkJCQkJc2VsZWN0MS52aXNpYmlsaXR5PSJ2aXNpYmxlIjsKCQkJCQlzZWxlY3Qy LnZpc2liaWxpdHk9InZpc2libGUiOwoJCQkJfQoJCQl9CgkJfQoJfQp9CgovLyBG b3IgdG9nZ2xpbmcgdGhlIGFydGljbGUgbGlzdHMgb24gdGhlIGpvdXJuYWwgaG9t ZSBwYWdlcwpmdW5jdGlvbiB0b2dnbGVBcnRpY2xlTGlzdChmb2N1cykgewoJdmFy IGZvY3VzTGlzdD1mb2N1cysiQXJ0aWNsZXMiOwoJdmFyIGZvY3VzVGFiPWZvY3Vz KyJUYWIiOwoKCXZhciBsaXN0ID0gbmV3IEFycmF5KCQoJ2p1c3RBY2NlcHRlZEFy dGljbGVzJyksJCgnanVzdFB1Ymxpc2hlZEFydGljbGVzJyksJCgnY3VycmVudElz c3VlQXJ0aWNsZXMnKSwkKCdtb3N0UmVhZEFydGljbGVzJyksJCgnbW9zdENpdGVk QXJ0aWNsZXMnKSk7Cgl2YXIgdGFiID0gbmV3IEFycmF5KCQoJ2p1c3RBY2NlcHRl ZFRhYicpLCQoJ2p1c3RQdWJsaXNoZWRUYWInKSwkKCdjdXJyZW50SXNzdWVUYWIn KSwkKCdtb3N0UmVhZFRhYicpLCQoJ21vc3RDaXRlZFRhYicpKTsKCWZvY3VzTGlz dD0kKGZvY3VzTGlzdCk7Cglmb2N1c1RhYj0kKGZvY3VzVGFiKTsKCgkvLyBmaXJz dCwgaGlkZSBhbGwgbGlzdHMKCWxpc3RbMF0uc3R5bGUuZGlzcGxheT0ibm9uZSI7 CglsaXN0WzFdLnN0eWxlLmRpc3BsYXk9Im5vbmUiOwoJbGlzdFsyXS5zdHlsZS5k aXNwbGF5PSJub25lIjsKCWxpc3RbM10uc3R5bGUuZGlzcGxheT0ibm9uZSI7Cgls aXN0WzRdLnN0eWxlLmRpc3BsYXk9Im5vbmUiOwoKCS8vIHNlY29uZCwgc2hvdyB0 aGUgb25lIHRoYXQgd2FzIGNsaWNrZWQKCWZvY3VzTGlzdC5zdHlsZS5kaXNwbGF5 PSJibG9jayI7CgoJLy8gdGhpcmQsIHB1dCBhbGwgdGhlIHRhYiBiYWNrZ3JvdW5k cyBpbnRvIHRoZSBuZXV0cmFsIHBvc2l0aW9uOwoJdGFiWzBdLnN0eWxlLmJhY2tn cm91bmRQb3NpdGlvbj0iLTRweCAtNHB4IjsKCXRhYlsxXS5zdHlsZS5iYWNrZ3Jv dW5kUG9zaXRpb249Ii05OXB4IC00cHgiOwoJdGFiWzJdLnN0eWxlLmJhY2tncm91 bmRQb3NpdGlvbj0iLTE5NHB4IC00cHgiOwoJdGFiWzNdLnN0eWxlLmJhY2tncm91 bmRQb3NpdGlvbj0iLTI4OXB4IC00cHgiOwoJdGFiWzRdLnN0eWxlLmJhY2tncm91 bmRQb3NpdGlvbj0iLTM4NHB4IC00cHgiOwoKCS8vIGZvdXJ0aCwgcHV0IHRoZSBm b2N1c2VkIHRhYiBiYWNrZ3JvdW5kIGludG8gdGhlIGFjdGl2ZSBwb3NpdGlvbgoJ aWYgKGZvY3VzPT0ianVzdEFjY2VwdGVkIikgewoJCWZvY3VzVGFiLnN0eWxlLmJh Y2tncm91bmRQb3NpdGlvbj0iLTRweCAtMjlweCI7Cgl9CgllbHNlIGlmIChmb2N1 cz09Imp1c3RQdWJsaXNoZWQiKSB7CgkJZm9jdXNUYWIuc3R5bGUuYmFja2dyb3Vu ZFBvc2l0aW9uPSItOTlweCAtMjlweCI7Cgl9CgllbHNlIGlmIChmb2N1cz09ImN1 cnJlbnRJc3N1ZSIpIHsKCQlmb2N1c1RhYi5zdHlsZS5iYWNrZ3JvdW5kUG9zaXRp b249Ii0xOTRweCAtMjlweCI7Cgl9CgllbHNlIGlmIChmb2N1cz09Im1vc3RSZWFk IikgewoJCWZvY3VzVGFiLnN0eWxlLmJhY2tncm91bmRQb3NpdGlvbj0iLTI4OXB4 IC0yOXB4IjsKCX0KCWVsc2UgewoJCWZvY3VzVGFiLnN0eWxlLmJhY2tncm91bmRQ b3NpdGlvbj0iLTM4NHB4IC0yOXB4IjsKCX0KCS8vYWRkZWQgYnkgQXR5cG9uCglz ZXRSYW5nZShmb2N1c0xpc3QpOwoJcHJlcGFyZVRodW1iRnJvbVRhYihmb2N1c0xp c3QpOwp9CgovLyBGb3Igc2VsZWN0aW5nL2Rlc2VsZWN0aW5nIGFydGljbGVzCi8v IHBhcmFtIGNoYW5nZWQgYnkgQVR5cG9uCmZ1bmN0aW9uIHNlbGVjdERlc2VsZWN0 KGJveCkgewoJdmFyIGZvcm09Ym94LmZvcm07Cgl2YXIgbj0wOwoJdmFyIGNoZWNr ZWQ9MDsKCXZhciBvbmVPclR3bz1mb3JtLnNlbGVjdEFsbC5sZW5ndGg7CgoJaWYg KGJveC5jaGVja2VkPT10cnVlKSB7CgkJaWYgKGZvcm0uZG9pWzFdKSB7CgkJCXdo aWxlIChmb3JtLmRvaVtuXSkgewoJCQkJZm9ybS5kb2lbbl0uY2hlY2tlZD10cnVl OwoJCQkJbisrOwoJCQl9CgkJCWlmIChvbmVPclR3bz09MikgewoJCQkJZm9ybS5z ZWxlY3RBbGxbMF0uY2hlY2tlZD10cnVlOwoJCQkJZm9ybS5zZWxlY3RBbGxbMV0u Y2hlY2tlZD10cnVlOwoJCQl9CgkJCWVsc2UgewoJCQkJZm9ybS5zZWxlY3RBbGwu Y2hlY2tlZD10cnVlOwoJCQl9CgkJfQoJCWVsc2UgZm9ybS5kb2kuY2hlY2tlZD10 cnVlOwoJfQoJZWxzZSB7CgkJaWYgKGZvcm0uZG9pWzFdKSB7CgkJCXdoaWxlIChm b3JtLmRvaVtuXSkgewoJCQkJZm9ybS5kb2lbbl0uY2hlY2tlZD1mYWxzZTsKCQkJ CW4rKzsKCQkJfQoJCQlpZiAob25lT3JUd289PTIpIHsKCQkJCWZvcm0uc2VsZWN0 QWxsWzBdLmNoZWNrZWQ9ZmFsc2U7CgkJCQlmb3JtLnNlbGVjdEFsbFsxXS5jaGVj a2VkPWZhbHNlOwoJCQl9CgkJCWVsc2UgewoJCQkJZm9ybS5zZWxlY3RBbGwuY2hl Y2tlZD1mYWxzZTsKCQkJfQoJCX0KCQllbHNlIGZvcm0uZG9pLmNoZWNrZWQ9ZmFs c2U7Cgl9Cn0KLy9mdW5jdGlvbiBhZGRlZCBieSBBVHlwb24KZnVuY3Rpb24gc3Vi bWl0QXJ0aWNsZXMoYW5FbGVtZW50LCBhY3Rpb24pIHsKICAgIHZhciBhRm9ybSA9 ICQoYW5FbGVtZW50KS51cCgnZm9ybScpOwogICAgc3VibWl0TXVsdGlBcnRpY2xl cyhhRm9ybSwgYWN0aW9uLCBmYWxzZSk7Cn0KLy8gRm9yIGNoZWNraW5nIGlmIGFs bCBvZiB0aGUgY2hlY2tib3hlcyBhcmUgY2hlY2tlZCBvciBub3QKLy9wYXJhbSBj aGFuZ2UsIEFUeXBvbiBjaGFuZ2UKZnVuY3Rpb24gZXZhbEFsbChib3gpIHsKICAg IHZhciBmb3JtPWJveC5mb3JtOy8vYXR5cG9uIGNoYW5nZQoJdmFyIG1heD1mb3Jt LmRvaS5sZW5ndGg7IC8vIGF0eXBvbiBjaGFuZ2UKCXZhciBvbmVPclR3bz1mb3Jt LnNlbGVjdEFsbC5sZW5ndGg7Cgl2YXIgY2hlY2tlZD0wOwoJZm9yICh2YXIgY291 bnQ9MDsgY291bnQgPCBtYXg7IGNvdW50KyspIHsKCQlpZiAoZXZhbCgiZm9ybS5k b2lbIiArIGNvdW50ICsgIl0uY2hlY2tlZCIpID09IHRydWUpIHsKCQkJY2hlY2tl ZCsrOwoJCX0KCX0KCWlmIChjaGVja2VkPT1tYXgpIHsKCQlpZiAob25lT3JUd289 PTIpIHsKCQkJZm9ybS5zZWxlY3RBbGxbMF0uY2hlY2tlZD10cnVlOwoJCQlmb3Jt LnNlbGVjdEFsbFsxXS5jaGVja2VkPXRydWU7CgkJfQoJCWVsc2UgewoJCQlmb3Jt LnNlbGVjdEFsbC5jaGVja2VkPXRydWU7CgkJfQoJfQoJZWxzZSB7CgkJaWYgKG9u ZU9yVHdvPT0yKSB7CgkJCWZvcm0uc2VsZWN0QWxsWzBdLmNoZWNrZWQ9ZmFsc2U7 CgkJCWZvcm0uc2VsZWN0QWxsWzFdLmNoZWNrZWQ9ZmFsc2U7CgkJfQoJCWVsc2Ug ewoJCQlmb3JtLnNlbGVjdEFsbC5jaGVja2VkPWZhbHNlOwoJCX0KCX0KfQoKLy8g Rm9yIHNob3dpbmcgdGhlIGZpZ3VyZSB0aHVtYm5haWxzCmZ1bmN0aW9uIG9wZW5U cmF5KGZpZywgZG9pKSB7Cgl2YXIgaGFuZGxlMT1maWcucGFyZW50Tm9kZS5nZXRF bGVtZW50c0J5VGFnTmFtZSgnYScpWzBdOwoJdmFyIGhhbmRsZTI9ZmlnLnBhcmVu dE5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2EnKVsxXTsKCXZhciB0cmF5SGFu ZGxlPWZpZy5wYXJlbnROb2RlOyAvLy50cmF5SGFuZGxlCgl2YXIgZmlnQm94PXRy YXlIYW5kbGUucGFyZW50Tm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2Jylb MF07IC8vLmZpZ3VyZUJveAoJdmFyIGZpZ3VyZU5hdj1maWcucGFyZW50Tm9kZS5n ZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2JylbMF07IC8vLmZpZ3VyZU5hdgoKICAg IGlmIChoYW5kbGUyLnN0eWxlLmRpc3BsYXk9PSJub25lIikgewogICAgICAgIC8v YXR5cG9uOiBnZXQgaW1hZ2VzCiAgICAgICAgdmFyIGRvaUZpZ3VyZSA9IGdldERv aUZpZ3VyZXMoZG9pKTsKICAgICAgICBpZiAoZG9pRmlndXJlKXsKICAgICAgICAg ICAgdmFyIGltZ1RhZyA9IGZpZ0JveC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2 JylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ltZycpWzBdOwogICAgICAgICAg ICB1cGRhdGVGaWdJbWcoZG9pRmlndXJlLCAwLCBpbWdUYWcpOwogICAgICAgICAg ICAvL3NldHVwIG5leHQgYW5kIHByZXYKICAgICAgICAgICAgc2V0dXBOZXh0UHJl dihmaWd1cmVOYXYsIGRvaUZpZ3VyZSwgMCk7CiAgICAgICAgfWVsc2V7CiAgICAg ICAgICAgIGFsZXJ0KCJUaGlzIGFydGljbGUgaGFzIG5vIGltYWdlIikKICAgICAg ICAgICAgcmV0dXJuOwogICAgICAgIH0KCQlFZmZlY3QuQXBwZWFyKGZpZ0JveCwg e2R1cmF0aW9uOiAwLjV9KTsKCQlFZmZlY3QuQXBwZWFyKGZpZ3VyZU5hdiwge2R1 cmF0aW9uOiAwLjV9KTsKCQloYW5kbGUxLnN0eWxlLmRpc3BsYXk9Im5vbmUiOwoJ CUVmZmVjdC5BcHBlYXIoaGFuZGxlMiwge2R1cmF0aW9uOiAwLjV9KTsKCQl0cmF5 SGFuZGxlLnN0eWxlLmJhY2tncm91bmQ9IiNlNGUyZTIiOwoKCQlpZiAoZmlnLnBh cmVudE5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NwYW4nKVsxXSkgewoJCQl2 YXIgd2VvPWZpZy5wYXJlbnROb2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzcGFu JylbMV07CgkJCUVmZmVjdC5BcHBlYXIod2VvLCB7ZHVyYXRpb246IDAuNX0pOwoJ CX0KCX0KCWVsc2UgewoJCUVmZmVjdC5GYWRlKGZpZ0JveCwge2R1cmF0aW9uOiAw LjV9KTsKCQlFZmZlY3QuRmFkZShmaWd1cmVOYXYsIHtkdXJhdGlvbjogMC41fSk7 CgkJRWZmZWN0LkFwcGVhcihoYW5kbGUxLCB7ZHVyYXRpb246IDAuNX0pOwoJCWhh bmRsZTIuc3R5bGUuZGlzcGxheT0ibm9uZSI7CgkJdHJheUhhbmRsZS5zdHlsZS5i YWNrZ3JvdW5kPSIjZmZmIHVybCgvdGVtcGxhdGVzL2pzcC9fc3R5bGUyL19hY2hz L2ltYWdlcy9oYW5kbGUtYmcuZ2lmKSBuby1yZXBlYXQgYm90dG9tIHJpZ2h0IjsK CgkJaWYgKGZpZy5wYXJlbnROb2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzcGFu JylbMV0pIHsKCQkJdmFyIHdlbz1maWcucGFyZW50Tm9kZS5nZXRFbGVtZW50c0J5 VGFnTmFtZSgnc3BhbicpWzFdOwoJCQlFZmZlY3QuRmFkZSh3ZW8sIHtkdXJhdGlv bjogMC41fSk7CgkJfQoJfQp9CgpmdW5jdGlvbiB1cGRhdGVGaWdJbWcoZG9pRmln dXJlLCBpbmRleCwgaW1nVGFnKSB7CiAgICB2YXIgaXNNZWRpdW0gPSBpbmRleD09 IDAgJiYgZG9pRmlndXJlLmlzVG9jRmlndXJlOwogICAgaW1nVGFnLnNyYyA9IGRv aUZpZ3VyZS5wYXRoICsgJy9pbWFnZXMvJyArIChpc01lZGl1bSA/ICdtZWRpdW0v JyA6ICdzbWFsbC8nKSArIGRvaUZpZ3VyZS5pbWFnZXNbaW5kZXhdOwogICAgJChp bWdUYWcpW2lzTWVkaXVtID8gJ2FkZENsYXNzTmFtZScgOiAncmVtb3ZlQ2xhc3NO YW1lJ10oJ3RvY0dyYXBoaWMnKTsKfQoKLy8gRm9yIHNob3dpbmcgbXVsdGlwbGUg ZmlndXJlIHRodW1ibmFpbHMKLy9wYXJhbSBjaGFuZ2VkIGJ5IEF0eXBvbgpmdW5j dGlvbiBvcGVuTXVsdGlUcmF5cyhidXR0b24pIHsKICAgIGlmICghYnV0dG9uKSBy ZXR1cm47CiAgICB2YXIgZm9ybSA9ICQoYnV0dG9uKS51cCgnZm9ybScpOwogICAg dmFyIGRvaUlucHV0cyA9IGZvcm0uZ2V0SW5wdXRzKCdjaGVja2JveCcsJ2RvaScp OwogICAgdmFyIG1heD1kb2lJbnB1dHMubGVuZ3RoOwoJdmFyIHRyYXksIGhhbmRs ZTEsIGhhbmRsZTIsIHRyYXlIYW5kbGUsIGZpZ0JveCwgbmF2LCBzdGF0ZSwgaW1n LCBkb2ksIGRvaUZpZ3VyZTsKCWJ1dHRvbj1idXR0b24uc3R5bGU7CgogICAgLy9k ZXRlcm1pbmUgc3RhdGUgb2YgdGhlIGJ1dHRvbiAoc2hvdyBhbGwgb3IgaGlkZSBh bGwpCglpZiAoYnV0dG9uLmJhY2tncm91bmRQb3NpdGlvbiAhPSAiMHB4IC0xOHB4 Iikgc3RhdGU9MDsKCWVsc2Ugc3RhdGU9MTsKCgkvL2ZpbmRpbmcgdGhlIHRyYXlz IGJ5IHRhcmdldGluZyB0aGUgYXJ0aWNsZSBjaGVja2JveGVzCglmb3IgKHZhciBj b3VudD0wOyBjb3VudCA8IG1heDsgY291bnQrKykgewoJCS8vZGV0ZXJtaW5lIGlm IHRoZSBhcnRpY2xlIGhhcyB0aHVtYm5haWxzCgkJaWYgKGRvaUlucHV0c1tjb3Vu dF0ucGFyZW50Tm9kZS5wYXJlbnROb2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdh JylbMF0pIHsKCQkJdHJheT1kb2lJbnB1dHNbY291bnRdLnBhcmVudE5vZGUucGFy ZW50Tm9kZTsgLy8uZmlndXJlVHJheS13cmFwCgkJCWhhbmRsZTE9dHJheS5nZXRF bGVtZW50c0J5VGFnTmFtZSgnYScpWzBdOwoJCQloYW5kbGUyPXRyYXkuZ2V0RWxl bWVudHNCeVRhZ05hbWUoJ2EnKVsxXTsKCQkJdHJheUhhbmRsZT1oYW5kbGUxLnBh cmVudE5vZGU7IC8vLnRyYXlIYW5kbGUKCQkJZmlnQm94PXRyYXlIYW5kbGUucGFy ZW50Tm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2JylbMF07IC8vLmZpZ3Vy ZUJveAoJCQluYXY9dHJheUhhbmRsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2 JylbMF07Ly8uZmlndXJlTmF2CiAgICAgICAgICAgIC8vYXR5cG9uOiBnZXQgaW1h Z2VzCiAgICAgICAgICAgIGltZyA9ICQoZmlnQm94KS5nZXRFbGVtZW50c0J5VGFn TmFtZSgnZGl2JylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ltZycpWzBdOwog ICAgICAgICAgICBkb2k9IGRvaUlucHV0c1tjb3VudF0udmFsdWU7CiAgICAgICAg ICAgIGRvaUZpZ3VyZSA9IGdldERvaUZpZ3VyZXMoZG9pKTsKCiAgICAgICAgICAg IGlmIChkb2lGaWd1cmUpIHsvLyBza2lwIGFydGljbGVzIHdpdGggbm8gaW1hZ2Vz CiAgICAgICAgICAgICAgICBpZiAoc3RhdGU9PTApIHsKICAgICAgICAgICAgICAg ICAgICB1cGRhdGVGaWdJbWcoZG9pRmlndXJlLCAwLCBpbWcpOwogICAgICAgICAg ICAgICAgICAgIHNldHVwTmV4dFByZXYobmF2LCBkb2lGaWd1cmUsIDApOwogICAg ICAgICAgICAgICAgICAgIGZpZ0JveC5zdHlsZS5kaXNwbGF5PSJibG9jayI7CiAg ICAgICAgICAgICAgICAgICAgLy9uYXYncyBkaXNwbGF5IGxhb2dpYyBpcyBoYW5k bGVkIGluIHNldHVwTmV4dFByZXYKLy8gICAgICAgICAgICAgICAgICAgIG5hdi5z dHlsZS5kaXNwbGF5PSJibG9jayI7CiAgICAgICAgICAgICAgICAgICAgaGFuZGxl MS5zdHlsZS5kaXNwbGF5PSJub25lIjsKICAgICAgICAgICAgICAgICAgICBoYW5k bGUyLnN0eWxlLmRpc3BsYXk9ImJsb2NrIjsKICAgICAgICAgICAgICAgICAgICB0 cmF5SGFuZGxlLnN0eWxlLmJhY2tncm91bmQ9IiNlNGUyZTIiOwogICAgICAgICAg ICAgICAgICAgIGlmICh0cmF5SGFuZGxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdz cGFuJylbMV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHdlbz10cmF5 SGFuZGxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzcGFuJylbMV07CiAgICAgICAg ICAgICAgICAgICAgICAgIHdlby5zdHlsZS5kaXNwbGF5PSJibG9jayI7CiAgICAg ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5iYWNr Z3JvdW5kUG9zaXRpb249IjBweCAtMThweCI7CiAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBmaWdCb3gu c3R5bGUuZGlzcGxheT0ibm9uZSI7CiAgICAgICAgICAgICAgICAgICAgbmF2LnN0 eWxlLmRpc3BsYXk9Im5vbmUiOwogICAgICAgICAgICAgICAgICAgIGhhbmRsZTEu c3R5bGUuZGlzcGxheT0iYmxvY2siOwogICAgICAgICAgICAgICAgICAgIGhhbmRs ZTIuc3R5bGUuZGlzcGxheT0ibm9uZSI7CiAgICAgICAgICAgICAgICAgICAgdHJh eUhhbmRsZS5zdHlsZS5iYWNrZ3JvdW5kPSJ1cmwoL3RlbXBsYXRlcy9qc3AvX3N0 eWxlMi9fYWNocy9pbWFnZXMvaGFuZGxlLWJnLmdpZikgbm8tcmVwZWF0IHJpZ2h0 IGJvdHRvbSI7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRyYXlIYW5kbGUuZ2V0 RWxlbWVudHNCeVRhZ05hbWUoJ3NwYW4nKVsxXSkgewogICAgICAgICAgICAgICAg ICAgICAgICB2YXIgd2VvPXRyYXlIYW5kbGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUo J3NwYW4nKVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgd2VvLnN0eWxlLmRp c3BsYXk9Im5vbmUiOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg ICAgICAgICBidXR0b24uYmFja2dyb3VuZFBvc2l0aW9uPSIwIDAiOwogICAgICAg ICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgoKLy8g Rm9yIHRvZ2dsaW5nIHRoZSBKb3VybmFsIFZpZXcgb24gdGhlIFB1YnMgSG9tZSBQ YWdlCmZ1bmN0aW9uIGNoYW5nZVZpZXcoaWQpIHsKCXZhciBzaG93PWlkKyJWaWV3 IjsKCXZhciBoaWdobGlnaHQ9aWQrIkxpbmsiOwoKCXZhciBibG9jazE9JCgnYXpW aWV3Jyk7Cgl2YXIgYmxvY2syPSQoJ2NhdFZpZXcnKTsKCXNob3c9JChzaG93KTsK CXZhciBsaW5rMT0kKCdhekxpbmsnKTsKCXZhciBsaW5rMj0kKCdjYXRMaW5rJyk7 CgloaWdobGlnaHQ9JChoaWdobGlnaHQpOwoKCS8vIGZpcnN0LCBoaWRlIGJvdGgg dmlld3MKCWJsb2NrMS5zdHlsZS5kaXNwbGF5PSJub25lIjsKCWJsb2NrMi5zdHls ZS5kaXNwbGF5PSJub25lIjsKCgkvLyBzZWNvbmQsIHNob3cgdGhlIG9uZSB0aGF0 IHdhcyBjbGlja2VkCglzaG93LnN0eWxlLmRpc3BsYXk9ImJsb2NrIjsKCgkvLyB0 aGlyZCwgc2V0IGJvdGggbGlua3MgdG8gdGhlIGRlZmF1bHQgYXBwZWFyYW5jZQoJ bGluazEuc3R5bGUuZm9udFdlaWdodD0ibm9ybWFsIjsKCWxpbmsxLnN0eWxlLmJh Y2tncm91bmQ9InRyYW5zcGFyZW50IjsKCWxpbmsxLnN0eWxlLmNvbG9yPSIjMzY5 IjsKCWxpbmsxLnN0eWxlLmJvcmRlcj0iMCI7CglsaW5rMi5zdHlsZS5mb250V2Vp Z2h0PSJub3JtYWwiOwoJbGluazIuc3R5bGUuYmFja2dyb3VuZD0idHJhbnNwYXJl bnQiOwoJbGluazIuc3R5bGUuY29sb3I9IiMzNjkiOwoJbGluazIuc3R5bGUuYm9y ZGVyPSIwIjsKCgkvLyBmb3VydGgsIGhpZ2hsaWdodCB0aGUgbGluayB0aGF0IHdh cyB1c2VkCgloaWdobGlnaHQuc3R5bGUuZm9udFdlaWdodD0iYm9sZCI7CgloaWdo bGlnaHQuc3R5bGUuYmFja2dyb3VuZD0iI2VlZSI7CgloaWdobGlnaHQuc3R5bGUu Y29sb3I9IiMwMDAiOwoJaGlnaGxpZ2h0LnN0eWxlLmJvcmRlcj0ic29saWQgMXB4 ICNjY2MiOwp9CgovLyBGb3IgZGlzcGxheWluZyBhIGpvdXJuYWwncyBoaXN0b3J5 IGxheWVyIG9uIEpvdXJuYWwgTGlzdApmdW5jdGlvbiBzaG93SGlzdG9yeShqb3Vy bmFsKSB7Cglqb3VybmFsPWpvdXJuYWwucGFyZW50Tm9kZS5nZXRFbGVtZW50c0J5 VGFnTmFtZSgndWwnKVswXTsKCWpvdXJuYWw9am91cm5hbC5zdHlsZTsKCglpZiAo am91cm5hbC5kaXNwbGF5IT0iYmxvY2siKSBqb3VybmFsLmRpc3BsYXk9ImJsb2Nr IjsKCWVsc2Ugam91cm5hbC5kaXNwbGF5PSJub25lIjsKfQoKLy8gRm9yIHNob3dp bmcvaGlkaW5nIHRoZSBqb3VybmFscyBpbiBDYXRlZ29yeSBWaWV3IG9uIFB1YnMg SFAKZnVuY3Rpb24gc2hvd0pybmxzKGNhdCkgewoJdmFyIGluZGljYXRvcj1jYXQu Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NwYW4nKVswXTsKCWNhdD1jYXQucGFyZW50 Tm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgndWwnKVswXTsKCWNhdD1jYXQuc3R5 bGU7CgoJaWYgKGNhdC5kaXNwbGF5IT0iYmxvY2siKSB7CgkJY2F0LmRpc3BsYXk9 ImJsb2NrIjsKCQlpbmRpY2F0b3IuaW5uZXJIVE1MPSItIjsKCX0KCWVsc2UgewoJ CWNhdC5kaXNwbGF5PSJub25lIjsKCQlpbmRpY2F0b3IuaW5uZXJIVE1MPSIrIjsK CX0KfQoKCi8vIEFydGljbGUgdGVtcGxhdGUgcHVsbGRvd24gbWVudXMKZnVuY3Rp b24gc2hvd1B1bGxkb3duKGJ1dHRvbikgewoJdmFyIGJsb2NrPWJ1dHRvbi5wYXJl bnROb2RlLnBhcmVudE5vZGU7Cgl2YXIgbGlzdD1idXR0b24ucGFyZW50Tm9kZS5n ZXRFbGVtZW50c0J5VGFnTmFtZSgndWwnKVswXTsKCWlmIChsaXN0LnN0eWxlLmRp c3BsYXkgPT0gIm5vbmUiKSB7CgkJYmxvY2suc3R5bGUuekluZGV4PSI5MDAwIjsK CQlFZmZlY3QuQmxpbmREb3duKGxpc3QsIHtkdXJhdGlvbjowLjN9KTsKCQlidXR0 b24uc3R5bGUuYmFja2dyb3VuZFBvc2l0aW9uPSIwIC0yMHB4IjsKCX0KCWVsc2Ug ewoJCWJsb2NrLnN0eWxlLnpJbmRleD0iMSI7CgkJRWZmZWN0LkJsaW5kVXAobGlz dCwge2R1cmF0aW9uOjAuM30pOwoJCWJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kUG9z aXRpb249IjAgMCI7Cgl9Cn0KZnVuY3Rpb24gaGlkZVB1bGxkb3duKGxpc3QpIHsK CXZhciBsaXN0PWxpc3QucGFyZW50Tm9kZS5wYXJlbnROb2RlLnBhcmVudE5vZGUu Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ2EnKVswXTsKCXNob3dQdWxsZG93bihsaXN0 KTsKfQoKLy8gQXJ0aWNsZSB0ZW1wbGF0ZSByZWZlcmVuY2Ugdmlld2VyCi8vIG5v dGU6IG5lZWRlZCB0byB3ZWVkIG91dCBPcGVyYSBiZWNhdXNlIGl0IGRvZXNuJ3Qg ZGlzcGxheSBwcm9wZXJseQpmdW5jdGlvbiBzaG93UmVmKHJlZiwgaWRzKSB7CiAg ICBpbml0UmVmZXJlbmNlc0JhbG9vbihyZWYsIGlkcyk7ICAgICAvLyBBZGRlZCBi eSBBdHlwb24KCXZhciBicm93c2VyTmFtZT1uYXZpZ2F0b3IuYXBwTmFtZTsKICAg IGlmIChicm93c2VyTmFtZSAhPSAiT3BlcmEiIHx8IC9cZCsvLmV4ZWMobmF2aWdh dG9yLmFwcFZlcnNpb24pWzBdID49IDkpIHsKCQl2YXIgYmFsbG9vbj0kKHJlZiku bmV4dCgpLmRvd24oKTsKICAgICAgICBpZiAoYmFsbG9vbiAmJiBiYWxsb29uLnN0 eWxlKSB7IC8vIEF0eXBvbjogZGVncmFkZSBncmFjZWZ1bGx5IHdoZW4gYmFsb29u IGlzIG5vdCBmb3VuZAogICAgICAgICAgICBpZiAoYmFsbG9vbi5zdHlsZS5kaXNw bGF5ICE9ICJpbmxpbmUiKSB7CiAgICAgICAgICAgICAgICAvLyAgaGlkZVJlZiBp cyBjYWxsaW5nIHNob3dSZWYgLSBuZWVkIHRvIGNoZWNrIGlmIGlzIGRpZmZlcmVu dCBiZWZvcmUgaXMgaGlkZGVuCiAgICAgICAgICAgICAgICB2YXIgaXNEaWZmZXJl bnQgPSAhd2luZG93Lm9wZW5lZFJlZmVyZW5jZUJhbGxvb24gfHwgd2luZG93Lm9w ZW5lZFJlZmVyZW5jZUJhbGxvb24uaW5uZXJIVE1MICE9IGJhbGxvb24uaW5uZXJI VE1MOwogICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5vcGVuZWRSZWZlcmVuY2VC YWxsb29uKSBoaWRlUmVmKHdpbmRvdy5vcGVuZWRSZWZlcmVuY2VCYWxsb29uKTsK ICAgICAgICAgICAgICAgIGlmIChpc0RpZmZlcmVudCkgewogICAgICAgICAgICAg ICAgICAgIGJhbGxvb24uc3R5bGUuZGlzcGxheSA9ICJpbmxpbmUiOwogICAgICAg ICAgICAgICAgICAgIHdpbmRvdy5vcGVuZWRSZWZlcmVuY2VCYWxsb29uID0gYmFs bG9vbjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAg ICBlbHNlIHsKICAgICAgICAgICAgICAgIGJhbGxvb24uc3R5bGUuZGlzcGxheT0i bm9uZSI7CiAgICAgICAgICAgICAgICB3aW5kb3cub3BlbmVkUmVmZXJlbmNlQmFs bG9vbiA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybjsK ICAgICAgICB9CiAgICB9CglwYXJlbnQubG9jYXRpb249IiNyZWZlcmVuY2VzIjsK fQpmdW5jdGlvbiBoaWRlUmVmKHJlZikgewoJcmVmPSQocmVmKS51cCgnLnJlZicp LnByZXZpb3VzKCk7CglzaG93UmVmKHJlZik7Cn0KCi8vIFNpZ24gSW4gUGFnZQpm dW5jdGlvbiBwcmVSZWdNZXNzYWdlKHJlZ2lzdHJhdGlvblBhZ2UpIHsKCXZhciBy PWNvbmZpcm0oIlRvIHJlZ2lzdGVyIG9uIHRoaXMgc2l0ZSwgeW91IG11c3QgY3Jl YXRlIGFuIEFDUyBJRCBvbiB0aGUgQUNTIFNvY2lldHkgd2Vic2l0ZSAod3d3LmFj cy5vcmcpLiBBZnRlciBjb21wbGV0aW5nIHlvdXIgcmVnaXN0cmF0aW9uLCB5b3Ug d2lsbCBiZSByZXR1cm5lZCBiYWNrIHRvIHRoZSBwYWdlIHlvdSB3ZXJlIHZpZXdp bmcgb24gdGhlIEFDUyBQdWJsaWNhdGlvbnMgd2Vic2l0ZSAocHVicy5hY3Mub3Jn KS4iKTsKCQlpZiAocj09dHJ1ZSkgewoJCQlwYXJlbnQubG9jYXRpb249cmVnaXN0 cmF0aW9uUGFnZTsKCQl9CgllbHNlIHsKCQlyZXR1cm4gZmFsc2U7Cgl9Cn0KCi8v IEFydGljbGUgdGVtcGxhdGUgcGVybWFsaW5rIHZpZXdlcgpmdW5jdGlvbiBzaG93 UGVybWFsaW5rKGRvaSkgewoJZG9pPWRvaS5wYXJlbnROb2RlLmdldEVsZW1lbnRz QnlUYWdOYW1lKCdzcGFuJylbMF07CglpZiAoZG9pLnN0eWxlLmRpc3BsYXkgPT0g Im5vbmUiKSB7CgkJRWZmZWN0LkJsaW5kRG93bihkb2ksIHtkdXJhdGlvbjogMC4z fSk7Cgl9CgllbHNlIEVmZmVjdC5CbGluZFVwKGRvaSwge2R1cmF0aW9uOiAwLjN9 KTsKfQpmdW5jdGlvbiBoaWRlUGVybWFsaW5rKGRvaSkgewoJZG9pPWRvaS5wYXJl bnROb2RlLnBhcmVudE5vZGU7CglzaG93UGVybWFsaW5rKGRvaSk7Cn0KCi8vIEFy dGljbGUgdGVtcGxhdGUgZmlndXJlIHZpZXdlcgpmdW5jdGlvbiBzaG93RmlndXJl cyhlKSB7CgkvL2FkZGVkIGJ5IEF0eXBvbgogICAgdmFyIG49MDsKICAgIGlmICgh ZSkJdmFyIGUgPSB3aW5kb3cuZXZlbnQ7CiAgICBpbml0Vmlld2VyKGUpOyAgLyog QXR5cG9uIGNoYW5nZSAqLwoJdmFyIHZpZXdlcj0kKCdmaWd1cmVWaWV3ZXItd3Jh cCcpOwogICAgaWYgKCF2aWV3ZXIpIHJldHVybjsgLy8gSXQgbWF5IHRha2Ugc29t ZSB0aW1lIHRpbGwgZG9jdW1lbnQgZ2V0cyByZWFkeQogICAgaWYgKHZpZXdlci5z dHlsZS5kaXNwbGF5ICE9ICcnKSB7CgkJYmc9IG5ldyBBcnJheSgpOyAvKiBBdHlw b24gY2hhbmdlICovCgkJYmdbMF09JCgnaGVhZGVyJyk7CgkJYmdbMV09JCgnbWFp bkJvZHknKTsKCQliZ1syXT0kKCdwYWdlRm9vdGVyLXdyYXAnKTsKCQl2YXIgcG9z WT0wOwoKCQlpZiAoZS5wYWdlWSkgewoJCQlwb3NZID0gZS5wYWdlWTsKCQl9CgkJ ZWxzZSBpZiAoZS5jbGllbnRZKSB7CgkJCXBvc1kgPSBlLmNsaWVudFkgKyBkb2N1 bWVudC5ib2R5LnNjcm9sbFRvcCArIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5z Y3JvbGxUb3A7CgkJfQoKCQl3aGlsZSAoYmdbbl0pIHsKCQkJYmdbbl0uc3R5bGUu TW96T3BhY2l0eT0iMC43MCI7CgkJCWJnW25dLnN0eWxlLktIVE1MT3BhY2l0eT0i MC43MCI7CgkJCWJnW25dLnN0eWxlLm9wYWNpdHk9IjAuNzAiOwoJCQluKys7CgkJ fQoJCUVmZmVjdC5BcHBlYXIoJ2ZpZ3VyZVZpZXdlci13cmFwJywge2R1cmF0aW9u OjAuNX0pOwoJCXBvc1k9cG9zWS0xMDA7IC8vIG9mZnNldCBmcm9tIG1vdXNlIHBv c2l0aW9uCgkJdmlld2VyLnN0eWxlLnRvcD1wb3NZKyJweCI7CgkJbmV3IERyYWdn YWJsZSgnZmlndXJlVmlld2VyLXdyYXAnLHtzdGFydGVmZmVjdDogbnVsbCwgZW5k ZWZmZWN0OiBudWxsfSk7Cgl9CgllbHNlIHsKCQl3aGlsZSAoYmdbbl0pIHsKCQkJ Ymdbbl0uc3R5bGUuTW96T3BhY2l0eT0iMSI7CgkJCWJnW25dLnN0eWxlLktIVE1M T3BhY2l0eT0iMSI7CgkJCWJnW25dLnN0eWxlLm9wYWNpdHk9IjEiOwoJCQluKys7 CgkJfQoJCUVmZmVjdC5GYWRlKCdmaWd1cmVWaWV3ZXItd3JhcCcsIHtkdXJhdGlv bjowLjV9KTsKCX0KfQoKCi8vIFNlYXJjaCBQYWdlOiBKb3VybmFsIEZpbHRlciBJ bnRlcmZhY2UgZnVuY3Rpb25zCmZ1bmN0aW9uIHRvZ2dsZWpGaWx0ZXIoKSB7Cgl2 YXIgdGFyZ2V0PSQoJ2pGaWx0ZXJJbnRlcmZhY2UnKTsKCWlmICh0YXJnZXQuc3R5 bGUuZGlzcGxheSA9PSAibm9uZSIpIHsKCQlFZmZlY3QuQXBwZWFyKHRhcmdldCwg e2R1cmF0aW9uOjAuM30pOwoJfQoJZWxzZSB7CgkJRWZmZWN0LkZhZGUodGFyZ2V0 LCB7ZHVyYXRpb246MC4zfSk7Cgl9Cn0KZnVuY3Rpb24gam91cm5hbEZpbHRlcihh Y3Rpb24sIHNraXBUb2dnbGUpIHsKCWlmIChhY3Rpb249PSJjYW5jZWwiKSB7CgkJ dG9nZ2xlakZpbHRlcigpOwoJfQoJZWxzZSB7CgkJdmFyIG1heD1kb2N1bWVudC5h ZHZTZWFyY2gucHVibGljYXRpb24ubGVuZ3RoOwoJCXZhciBjb2Rlbj1uZXcgQXJy YXkoKTsKCQl2YXIgbGlzdD0kKCdzZWxKb3VybmFscycpOwoJCXZhciBjaGVja2Vk PTA7CgkJZm9yICh2YXIgY291bnQ9MDsgY291bnQgPCBtYXg7IGNvdW50KyspIHsK CQkJaWYgKGV2YWwoImRvY3VtZW50LmFkdlNlYXJjaC5wdWJsaWNhdGlvblsiICsg Y291bnQgKyAiXS5jaGVja2VkIikgPT0gdHJ1ZSkgewoJCQkJY29kZW5bY2hlY2tl ZF09ZG9jdW1lbnQuYWR2U2VhcmNoLnB1YmxpY2F0aW9uW2NvdW50XS52YWx1ZTsK CQkJCWNoZWNrZWQrKzsKCQkJfQoJCX0KCQlpZiAoY2hlY2tlZCA9PSAwIHx8IGNo ZWNrZWQ9PW1heCkgewoJCQlsaXN0LmlubmVySFRNTD0iPGxpPkFsbCBBQ1MgSm91 cm5hbHM8L2xpPiI7CiAgICAgICAgICAgIGlmICghc2tpcFRvZ2dsZSkgewogICAg ICAgICAgICAgICAgdG9nZ2xlakZpbHRlcigpOwogICAgICAgICAgICB9CgkJfQoJ CWVsc2UgewoJCQl2YXIgakxpc3Q9IiI7CgkJCXZhciBuPTA7CgkJCXdoaWxlIChj b2RlbltuXSkgewoJCQkJY29kZW5bbl09ZGVjb2RlQ29kZW4oY29kZW5bbl0pOwoJ CQkJakxpc3Q9akxpc3QgKyAiPGxpPiIgKyBjb2RlbltuXSArICI8L2xpPiI7CgkJ CQluKys7CgkJCX0KCQkJbGlzdC5pbm5lckhUTUw9akxpc3Q7CgkJfQoJCW5ldyBF ZmZlY3QuSGlnaGxpZ2h0KGxpc3QsIHtkdXJhdGlvbjogMi41fSk7CiAgICAgICAg aWYgKCFza2lwVG9nZ2xlKSB7CiAgICAgICAgICAgIHRvZ2dsZWpGaWx0ZXIoKTsK ICAgICAgICB9Cgl9Cn0KCmZ1bmN0aW9uIGNoYW5nZUFsbCh0b2dnbGUpIHsKCXZh ciBib3hHcm91cD1kb2N1bWVudC5hZHZTZWFyY2gucHVibGljYXRpb247Cgl1cGRh dGVDaGVja3MoYm94R3JvdXAsdG9nZ2xlKTsKfQoKZnVuY3Rpb24gdXBkYXRlQ2hl Y2tzKGJveEdyb3VwLHRvZ2dsZSkgewoJdmFyIG1heD1ib3hHcm91cC5sZW5ndGg7 CglpZiAodG9nZ2xlPT0ic2VsZWN0IikgewoJCWZvciAodmFyIGNvdW50PTA7IGNv dW50IDwgbWF4OyBjb3VudCsrKSB7CgkJCWJveEdyb3VwW2NvdW50XS5jaGVja2Vk PXRydWU7CgkJfQoJfQoJZWxzZSB7CgkJZm9yICh2YXIgY291bnQ9MDsgY291bnQg PCBtYXg7IGNvdW50KyspIHsKCQkJYm94R3JvdXBbY291bnRdLmNoZWNrZWQ9ZmFs c2U7CgkJfQoJfQp9CgpmdW5jdGlvbiBkZWNvZGVDb2Rlbihjb2RlbikgewoJaWYg KGNvZGVuPT0iYWNocmU0IikgY29kZW49IkFjY291bnRzIG9mIENoZW1pY2FsIFJl c2VhcmNoIjsKCWlmIChjb2Rlbj09ImFhbWljayIpIGNvZGVuPSJBQ1MgQXBwbGll ZCBNYXRlcmlhbCAmYW1wOyBJbnRlcmZhY2VzIjsKCWlmIChjb2Rlbj09ImFjYmNj dCIpIGNvZGVuPSJBQ1MgQ2hlbWljYWwgQmlvbG9neSI7CglpZiAoY29kZW49PSJh bmNhYzMiKSBjb2Rlbj0iQUNTIE5hbm8iOwoJaWYgKGNvZGVuPT0iYW5jaGFtIikg Y29kZW49IkFuYWx5dGljYWwgQ2hlbWlzdHJ5IjsKCWlmIChjb2Rlbj09ImJpY2hh dyIpIGNvZGVuPSJCaW9jaGVtaXN0cnkiOwoJaWYgKGNvZGVuPT0iYmNjaGVzIikg Y29kZW49IkJpb2Nvbmp1Z2F0ZSBDaGVtaXN0cnkiOwoJaWYgKGNvZGVuPT0iYm9t YWY2IikgY29kZW49IkJpb21hY3JvbW9sZWN1bGVzIjsKCWlmIChjb2Rlbj09ImJp cHJldCIpIGNvZGVuPSJCaW90ZWNobm9sb2d5IFByb2dyZXNzIjsKCWlmIChjb2Rl bj09ImNydG9lYyIpIGNvZGVuPSJDaGVtaWNhbCBSZXNlYXJjaCBpbiBUb3hpY29s b2d5IjsKCWlmIChjb2Rlbj09ImNocmVheSIpIGNvZGVuPSJDaGVtaWNhbCBSZXZp ZXdzIjsKCWlmIChjb2Rlbj09ImNtYXRleCIpIGNvZGVuPSJDaGVtaXN0cnkgb2Yg TWF0ZXJpYWxzIjsKCWlmIChjb2Rlbj09ImNnZGVmdSIpIGNvZGVuPSJDcnlzdGFs IEdyb3d0aCAmYW1wOyBEZXNpZ24iOwoJaWYgKGNvZGVuPT0iZW5mdWVtIikgY29k ZW49IkVuZXJneSAmYW1wOyBGdWVscyI7CglpZiAoY29kZW49PSJlc3RoYWciKSBj b2Rlbj0iRW52aXJvbm1lbnRhbCBTY2llbmNlICZhbXA7IFRlY2hub2xvZ3kiOwoJ aWYgKGNvZGVuPT0iaWVjcmVkIikgY29kZW49IkluZHVzdHJpYWwgJmFtcDsgRW5n aW5lZXJpbmcgQ2hlbWlzdHJ5IFJlc2VhcmNoIjsKCWlmIChjb2Rlbj09Imlub2Nh aiIpIGNvZGVuPSJJbm9yZ2FuaWMgQ2hlbWlzdHJ5IjsKCWlmIChjb2Rlbj09Imph ZmNhdSIpIGNvZGVuPSJKb3VybmFsIG9mIEFncmljdWx0dXJhbCBhbmQgRm9vZCBD aGVtaXN0cnkiOwoJaWYgKGNvZGVuPT0iamFjc2F0IikgY29kZW49IkpvdXJuYWwg b2YgdGhlIEFtZXJpY2FuIENoZW1pY2FsIFNvY2lldHkiOwoJaWYgKGNvZGVuPT0i amNlYWF4IikgY29kZW49IkpvdXJuYWwgb2YgQ2hlbWljYWwgJmFtcDsgRW5naW5l ZXJpbmcgRGF0YSI7CglpZiAoY29kZW49PSJqY2lzZDgiKSBjb2Rlbj0iSm91cm5h bCBvZiBDaGVtaWNhbCBJbmZvcm1hdGlvbiBNb2RlbGluZyI7CglpZiAoY29kZW49 PSJqY3RjZWUiKSBjb2Rlbj0iSm91cm5hbCBvZiBDaGVtaWNhbCBUaGVvcnkgYW5k IENvbXB1dGF0aW9uIjsKCWlmIChjb2Rlbj09ImpjY2hmZiIpIGNvZGVuPSJKb3Vy bmFsIG9mIENvbWJpbmF0b3JpYWwgQ2hlbWlzdHJ5IjsKCWlmIChjb2Rlbj09Impt Y21hciIpIGNvZGVuPSJKb3VybmFsIG9mIE1lZGljaW5hbCBDaGVtaXN0cnkiOwoJ aWYgKGNvZGVuPT0iam5wcmRmIikgY29kZW49IkpvdXJuYWwgb2YgTmF0dXJhbCBQ cm9kdWN0cyI7CglpZiAoY29kZW49PSJqb2NlYWgiKSBjb2Rlbj0iSm91cm5hbCBv ZiBPcmdhbmljIENoZW1pc3RyeSI7CglpZiAoY29kZW49PSJqcGNhZmgiKSBjb2Rl bj0iSm91cm5hbCBvZiBQaHlzaWNhbCBDaGVtaXN0cnkgQSI7CglpZiAoY29kZW49 PSJqcGNiZmsiKSBjb2Rlbj0iSm91cm5hbCBvZiBQaHlzaWNhbCBDaGVtaXN0cnkg QiI7CglpZiAoY29kZW49PSJqcGNjY2siKSBjb2Rlbj0iSm91cm5hbCBvZiBQaHlz aWNhbCBDaGVtaXN0cnkgQyI7CglpZiAoY29kZW49PSJqcHJvYnMiKSBjb2Rlbj0i Sm91cm5hbCBvZiBQcm90ZW9tZSBSZXNlYXJjaCI7CglpZiAoY29kZW49PSJsYW5n ZDUiKSBjb2Rlbj0iTGFuZ211aXIiOwoJaWYgKGNvZGVuPT0ibWFtb2J4IikgY29k ZW49Ik1hY3JvbW9sZWN1bGVzIjsKCWlmIChjb2Rlbj09Im1wb2hicCIpIGNvZGVu PSJNb2xlY3VsYXIgUGhhcm1hY2V1dGljcyI7CglpZiAoY29kZW49PSJuYWxlZmQi KSBjb2Rlbj0iTmFubyBMZXR0ZXJzIjsKCWlmIChjb2Rlbj09Im9ybGVmNyIpIGNv ZGVuPSJPcmdhbmljIExldHRlcnMiOwoJaWYgKGNvZGVuPT0ib3ByZGZrIikgY29k ZW49Ik9yZ2FuaWMgUHJvY2VzcyBSZXNlYXJjaCAmYW1wOyBEZXZlbG9wbWVudCI7 CglpZiAoY29kZW49PSJvcmduZDciKSBjb2Rlbj0iT3JnYW5vbWV0YWxsaWNzIjsK CXJldHVybiBjb2RlbjsKfQoKZnVuY3Rpb24gc2F2ZVNlYXJjaChhY3Rpb24pIHsK CXZhciBidXR0b24xPSQoJ3NhdmVpdCcpOwoJdmFyIGJ1dHRvbjI9JCgnZmluYWxp emUnKTsKCXZhciBsaW5rPSQoJ3ZpZXdTYXZlZCcpOwoJdmFyIGxheWVyMT0kKCdz YXZlU2VhcmNoQScpOwoJdmFyIGxheWVyMj0kKCdzYXZlU2VhcmNoQicpOwoJdmFy IGxheWVyMz0kKCdzYXZlU2VhcmNoQycpOwogICAgdmFyIGxheWVyND0kKCdzYXZl U2VhcmNoRCcpOwoJaWYgKGFjdGlvbj09InN0ZXAyIikgewoJCUVmZmVjdC5GYWRl KGJ1dHRvbjEpOwoJCUVmZmVjdC5BcHBlYXIoYnV0dG9uMik7CgkJRWZmZWN0LkZh ZGUobGluayk7CgkJRWZmZWN0LkJsaW5kRG93bihsYXllcjIpOwoJfQoJZWxzZSBp ZiAoYWN0aW9uPT0iY2FuY2VsIikgewoJCUVmZmVjdC5CbGluZFVwKGxheWVyMik7 CgkJRWZmZWN0LkFwcGVhcihidXR0b24xKTsKCQlFZmZlY3QuRmFkZShidXR0b24y KTsKCQlFZmZlY3QuQXBwZWFyKGxpbmspOwoJfQogICAgZWxzZSBpZiAoYWN0aW9u PT0ic2F2aW5nIikgeyAvLyBhdHlwb24gY2hhbmdlCiAgICAgICAgbGF5ZXIxLnN0 eWxlLmRpc3BsYXk9Im5vbmUiOwogICAgICAgIGxheWVyMi5zdHlsZS5kaXNwbGF5 PSJub25lIjsKICAgICAgICBFZmZlY3QuQXBwZWFyKGxheWVyMyk7CiAgICB9CiAg ICBlbHNlIGlmIChhY3Rpb249PSJmaW5hbGl6ZSIpIHsKICAgICAgICBsYXllcjEu c3R5bGUuZGlzcGxheT0ibm9uZSI7CiAgICAgICAgbGF5ZXIyLnN0eWxlLmRpc3Bs YXk9Im5vbmUiOwogICAgICAgIGxheWVyMy5zdHlsZS5kaXNwbGF5PSJub25lIjsK ICAgICAgICBFZmZlY3QuQXBwZWFyKGxheWVyNCk7IC8vIGF0eXBvbiBjaGFuZ2UK ICAgIH0KCWVsc2UgcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBzaG93U2VhcmNo VGlwcygpIHsKCXZhciB0aXBzPSQoJ3NlYXJjaFRpcHNMYXllcicpOwoJdmFyIGxp bms9JCgnc2VhcmNoVGlwc0xpbmsnKTsKCXZhciBuZWVkZml4PTA7Cgl2YXIgcmVz dWx0cz0kKCdyZXN1bHRzJyk7Cgl2YXIgcHVsbGRvd24xPXJlc3VsdHMuZ2V0RWxl bWVudHNCeVRhZ05hbWUoJ2Zvcm0nKVswXTsKCXZhciBwdWxsZG93bjI9cmVzdWx0 cy5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZm9ybScpWzFdOwoKCXZhciBicm93c2Vy TmFtZT1uYXZpZ2F0b3IuYXBwTmFtZTsKCWlmIChicm93c2VyTmFtZT09Ik1pY3Jv c29mdCBJbnRlcm5ldCBFeHBsb3JlciIpIHsKCQlpZiAobmF2aWdhdG9yLmFwcFZl cnNpb24uaW5kZXhPZigiTVNJRSIpIT0tMSkgewoJCQl2YXIgdGVtcD1uYXZpZ2F0 b3IuYXBwVmVyc2lvbi5zcGxpdCgiTVNJRSIpOwoJCQl2YXIgdmVyc2lvbj1wYXJz ZUZsb2F0KHRlbXBbMV0pOwoJCX0KCQlpZiAodmVyc2lvbiA8IDcpIG5lZWRmaXg9 MTsKCX0KCgoJaWYgKHRpcHMuc3R5bGUuZGlzcGxheT09Im5vbmUiKSB7CgkJaWYg KG5lZWRmaXg9PTEpIHsKCQkJcHVsbGRvd24xLnN0eWxlLmRpc3BsYXk9Im5vbmUi OwoJCQlwdWxsZG93bjIuc3R5bGUuZGlzcGxheT0ibm9uZSI7CgkJfQoJRWZmZWN0 LkFwcGVhcih0aXBzKTsKCWxpbmsuaW5uZXJIVE1MPSJIaWRlIFNlYXJjaCBUaXBz IjsKCX0KCgllbHNlIHsKCQlpZiAobmVlZGZpeD09MSkgewoJCQlwdWxsZG93bjEu c3R5bGUuZGlzcGxheT0iYmxvY2siOwoJCQlwdWxsZG93bjIuc3R5bGUuZGlzcGxh eT0iYmxvY2siOwoJCX0KCUVmZmVjdC5GYWRlKHRpcHMpOwoJbGluay5pbm5lckhU TUw9IlNob3cgU2VhcmNoIFRpcHMiOwoJfQp9CgpmdW5jdGlvbiBzaG93SXNzdWVz KGxpbmspIHsKICAgICQobGluaykudXAoJ3VsJykudG9nZ2xlQ2xhc3NOYW1lKCdj bG9zZWQnKTsKfQoKLy8gT25saW5lIE5ld3MgQXJjaGl2ZQpmdW5jdGlvbiBzaG93 TW9udGgoYW5jaG9yLG1vbnRoKSB7Cgl2YXIgbW9udGhzID0gbmV3IEFycmF5KCk7 Cgltb250aHNbMF09ImFsbCI7Cgltb250aHNbMV09ImphbiI7Cgltb250aHNbMl09 ImZlYiI7Cgltb250aHNbM109Im1hciI7Cgltb250aHNbNF09ImFwciI7Cgltb250 aHNbNV09Im1heSI7Cgltb250aHNbNl09Imp1biI7Cgltb250aHNbN109Imp1bCI7 Cgltb250aHNbOF09ImF1ZyI7Cgltb250aHNbOV09InNlcCI7Cgltb250aHNbMTBd PSJvY3QiOwoJbW9udGhzWzExXT0ibm92IjsKCW1vbnRoc1sxMl09ImRlYyI7CgoJ Ly8gaGlkZSBhbGwgbGF5ZXJzCglmb3IgKHg9MTsgeDwxMzsgeCsrKSB7CgkJdmFy IGhpZGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobW9udGhzW3hdKS5zdHlsZTsK CQloaWRlLmRpc3BsYXk9Im5vbmUiOwoJfQoKCS8vIHJlc2V0IGFsbCBhbmNob3Jz Cglmb3IgKHg9MDsgeDwxMzsgeCsrKSB7CgkJdmFyIGNoYW5nZT1hbmNob3IucGFy ZW50Tm9kZS5wYXJlbnROb2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdhJylbeF0u c3R5bGU7CgkJY2hhbmdlLmJhY2tncm91bmRDb2xvcj0iI2VlZSI7CgkJY2hhbmdl LmNvbG9yPSIjMzY5IjsKCX0KCgkvLyBzaG93IHRoZSBhcHByb3ByaWF0ZSBsYXll cihzKQoJaWYgKG1vbnRoPT0iYWxsIikgewoJCWZvciAoeD0xOyB4PDEzOyB4Kysp IHsKCQkJdmFyIHNob3c9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobW9udGhzW3hd KTsKCQkJRWZmZWN0LkFwcGVhcihzaG93KTsKCQl9Cgl9CgllbHNlIHsKCQltb250 aD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChtb250aCk7CgkJRWZmZWN0LkFwcGVh cihtb250aCk7Cgl9CgkvLyBoaWdobGlnaHQgdGhlIGFwcHJvcHJpYXRlIGFuY2hv cgoJYW5jaG9yLnN0eWxlLmJhY2tncm91bmRDb2xvcj0iIzM2OSI7CglhbmNob3Iu c3R5bGUuY29sb3I9IiNmZmYiOwp9CgovLyBFbWFpbCBSZWdpc3RyYXRpb24KZnVu Y3Rpb24gZW5hYmxlUmFkaW8oY2hlY2tib3gsIHJhZGlvMSwgcmFkaW8yKSB7Cglj aGVja2JveD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChjaGVja2JveCk7CglyYWRp bzE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocmFkaW8xKTsKCXJhZGlvMj1kb2N1 bWVudC5nZXRFbGVtZW50QnlJZChyYWRpbzIpOwoJaWYgKGNoZWNrYm94LmNoZWNr ZWQ9PXRydWUpIHsKCQlyYWRpbzEuZGlzYWJsZWQ9ZmFsc2U7CgkJcmFkaW8yLmRp c2FibGVkPWZhbHNlOwoJfQoJZWxzZSB7CgkJcmFkaW8xLmRpc2FibGVkPXRydWU7 CgkJcmFkaW8yLmRpc2FibGVkPXRydWU7Cgl9Cn0KCi8vIEVsZWN0cm9uaWMgR2Fs bGV5IFByb29mCmZ1bmN0aW9uIGVuYWJsZVRleHRhcmVhKHRleHRBcmVhSUQpIHsK CXJhZGlvU2V0PWRvY3VtZW50LnByb29mRm9ybS5yZWFkeVN0YXRlOwoJdGV4dGJv eD0kKHRleHRBcmVhSUQpOwoJZm9yICh2YXIgaT0wOyBpIDwgcmFkaW9TZXQubGVu Z3RoOyBpKyspIHsKCQlpZiAocmFkaW9TZXRbaV0uY2hlY2tlZCkgewoJCQl2YXIg cmFkaW9WYWx1ZSA9IHJhZGlvU2V0W2ldLnZhbHVlOwoJCX0KCX0KCWlmIChyYWRp b1ZhbHVlPT0ibm9idXR0b24iKSB7CgkJdGV4dGJveC5kaXNhYmxlZD1mYWxzZTsK CX0KCWVsc2UgewoJCXRleHRib3guZGlzYWJsZWQ9dHJ1ZTsKCX0KfQoKLy8gUHJv ZmlsZTogU2F2ZWQgU2VhcmNoZXMKZnVuY3Rpb24gdG9nZ2xlQ3JpdGVyaWEoYnV0 dG9uKSB7Cgljcml0ZXJpYT1idXR0b24ucGFyZW50Tm9kZS5wYXJlbnROb2RlLmdl dEVsZW1lbnRzQnlUYWdOYW1lKCdkaXYnKVsxXTsKCWlmIChjcml0ZXJpYS5zdHls ZS5kaXNwbGF5PT0ibm9uZSIpIHsKCQlFZmZlY3QuQmxpbmREb3duKGNyaXRlcmlh KTsKCQlidXR0b24uaW5uZXJIVE1MPSImdWFycjsgSGlkZSBDcml0ZXJpYSI7Cgl9 CgllbHNlIHsKCQlFZmZlY3QuQmxpbmRVcChjcml0ZXJpYSk7CgkJYnV0dG9uLmlu bmVySFRNTD0iJmRhcnI7IFNob3cgQ3JpdGVyaWEiOwoJfQp9CgovKiBBdHlwb24g YWRkZWQgKi8KZnVuY3Rpb24gaW5pdFZpZXdlcihlKSB7CiAgICBpZiAoIXdpbmRv dy5maWd1cmVWaWV3ZXIpIHJldHVybiBmYWxzZTsKCWlmICgkKCdmaWd1cmVWaWV3 ZXItd3JhcCcpICYmICQoJ2ZpZ3VyZVZpZXdlci13cmFwJykuc3R5bGUuZGlzcGxh eSA9PSAnJykgcmV0dXJuIGZhbHNlOwoKICAgIHZhciBmaWd1cmVzID0gd2luZG93 LmZpZ3VyZVZpZXdlci5maWd1cmVzOwoKICAgIC8qIGNsZWFyIHVwIGZpZ3VyZXMg dGhhdCB3ZXJlIG5vdCByZW5kZXJlZCAqLwogICAgZm9yICh2YXIgaSA9IGZpZ3Vy ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICB2YXIgZmlndXJl TWV0YSA9IGZpZ3VyZXNbaV07CiAgICAgICAgaWYgKCFmaWd1cmVNZXRhIHx8ICEk KGZpZ3VyZU1ldGEuaSkpIGZpZ3VyZXMuc3BsaWNlKGksIDEpOwogICAgfQogICAg aWYgKGZpZ3VyZXMubGVuZ3RoID09IDApIHsKICAgICAgICB3aW5kb3cuZmlndXJl Vmlld2VyID0gbnVsbDsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAg dmFyIGZ2dyA9ICQoJ2ZpZ3VyZVZpZXdlci13cmFwJyk7CiAgICBpZiAoIWZ2dykg ewogICAgICAgIHZhciBjID0gJCgnY29udGFpbmVyJyk7CiAgICAgICAgaWYgKGMp IHsKICAgICAgICAgICAgZnZ3ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2 Iik7CiAgICAgICAgICAgIGZ2dy5pZD0nZmlndXJlVmlld2VyLXdyYXAnOwogICAg ICAgICAgICBmdncuc3R5bGUuZGlzcGxheT0nbm9uZSc7CiAgICAgICAgICAgIGMu YXBwZW5kQ2hpbGQoZnZ3KTsKICAgICAgICAgICAgZnZ3LmlubmVySFRNTCA9CiAg ICAgICAgICAgICAgICAnPGRpdiBpZD0iZmlndXJlVmlld2VyIj5cCiAgICAgICAg ICAgICAgICAgICAgPGRpdiBpZD0iZmlndXJlVmlld2VyTmF2Ij5cCiAgICAgICAg ICAgICAgICAgICAgICAgIDxhIHRpdGxlPSJDbG9zZSBGaWd1cmUgVmlld2VyIiBo cmVmPSIjIiBvbmNsaWNrPSJzaG93RmlndXJlcyhldmVudCk7IHJldHVybiBmYWxz ZTsiIGNsYXNzPSJjbG9zZSI+Q2xvc2U8L2E+XAogICAgICAgICAgICAgICAgICAg ICAgICA8ZGl2IGNsYXNzPSJmaWd1cmVOYXYiPlwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxhIGNsYXNzPSJwcmV2IiB0aXRsZT0iUHJldmlvdXMgRmlndXJl IiBocmVmPSIjIiBjbGFzcz0iZGlzYWJsZWQiPjwvYT5cCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8c3Bhbj5GaWd1cmUgPHNwYW4gY2xhc3M9ImluZGV4Ij4x PC9zcGFuPiBvZiAnICsgZmlndXJlcy5sZW5ndGggKyAnPC9zcGFuPlwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJuZXh0IiB0aXRsZT0iTmV4 dCBGaWd1cmUiIGhyZWY9IiMiIGNsYXNzPSJkaXNhYmxlZCI+PC9hPlwKICAgICAg ICAgICAgICAgICAgICAgICAgPC9kaXY+XAogICAgICAgICAgICAgICAgICAgIDwv ZGl2PlwKICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJmaWd1cmVDYW52YXMi PlwKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZmlnVG9vbHMiPlwK ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XAogICAgICAgICAgICAgICAg ICAgICAgICA8ZGl2IGNsYXNzPSJmaWdCb3giPlwKICAgICAgICAgICAgICAgICAg ICAgICAgPC9kaXY+XAogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz PSJjYXB0aW9uIj4mbmJzcDtcCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2 PlwKICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cCiAgICAgICAgICAgICAgICA8 L2Rpdj5cCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJmaWd1cmVWaWV3ZXItZm9v dGVyIj5cCiAgICAgICAgICAgICAgICAgICAgPGltZyBhbHQ9IiIgc3JjPSIvdGVt cGxhdGVzL2pzcC9fc3R5bGUyL19hY2hzL2ltYWdlcy9maWd1cmVWaWV3ZXItYmcz LmdpZiIvPlwKICAgICAgICAgICAgICAgIDwvZGl2Pic7CiAgICAgICAgICAgIGZ2 dyA9ICQoZnZ3KTsKICAgICAgICB9CiAgICB9CgogICAgdmFyIGluZGV4ID0gMDsK ICAgIHZhciBmaWd1cmVFbGVtZW50ID0gRXZlbnQuZmluZEVsZW1lbnQoZSwgIi5m aWd1cmUiKTsKICAgIGlmIChmaWd1cmVFbGVtZW50ICYmIGZpZ3VyZUVsZW1lbnQu aWQpIHsKICAgICAgICB2YXIgZmlndXJlSWQgPSBmaWd1cmVFbGVtZW50LmlkOwog ICAgICAgIHdoaWxlIChpbmRleCA8IGZpZ3VyZXMubGVuZ3RoICYmIGZpZ3VyZXNb aW5kZXhdLmkgIT0gZmlndXJlSWQpIGluZGV4Kys7CiAgICB9CiAgICBzaG93SW1h Z2UoaW5kZXgpOwp9CgpmdW5jdGlvbiBzaG93SW1hZ2UoaW5kZXgpIHsKICAgIHZh ciBmaWd1cmVzID0gd2luZG93LmZpZ3VyZVZpZXdlci5maWd1cmVzOwogICAgdmFy IGZpZ3VyZU1ldGEgPSBmaWd1cmVzW2luZGV4XTsKICAgIGlmICghZmlndXJlTWV0 YSkgZmlndXJlTWV0YSA9IGZpZ3VyZXNbaW5kZXg9MF07CiAgICB2YXIgZ3JhcGhp Y3MgPSBmaWd1cmVNZXRhLmc7CiAgICB2YXIgZmlndXJlRWxlbWVudCA9ICQoZmln dXJlTWV0YS5pKTsKCiAgICB2YXIgZnZ3ID0gJCgnZmlndXJlVmlld2VyLXdyYXAn KTsKCiAgICAvKiBpbWFnZSBhbmQgY2FwdGlvbiAqLwogICAgdmFyIGh0bWwgPSAi IjsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JhcGhpY3MubGVuZ3RoOyBpKysp IHsKICAgICAgICBodG1sICs9ICc8aW1nIGFsdD0iRmlndXJlIiBzcmM9IicgKyB3 aW5kb3cuZmlndXJlVmlld2VyLnBhdGggKyAnL2ltYWdlcy9tZWRpdW0vJyArIGdy YXBoaWNzW2ldLm0gKyAnIi8+JzsKICAgIH0KICAgIGZ2dy5kb3duKCIuZmlnQm94 IikuaW5uZXJIVE1MID0gaHRtbDsKICAgIHZhciBjYXB0aW9uRWxlbWVudCA9IGZp Z3VyZUVsZW1lbnQuZG93bigiLmNhcHRpb24iKTsKICAgIGZ2dy5kb3duKCIuY2Fw dGlvbiIpLmlubmVySFRNTCA9IGNhcHRpb25FbGVtZW50ID8gY2FwdGlvbkVsZW1l bnQuaW5uZXJIVE1MIDogIiI7CgogICAgLyogbmF2aWdhdGlvbiAqLwogICAgdmFy IHBMaW5rID0gZnZ3LmRvd24oJy5wcmV2Jyk7CiAgICBpZiAoaW5kZXggPT0gMCkg ewogICAgICAgIHBMaW5rLmFkZENsYXNzTmFtZSgiZGlzYWJsZWQiKTsKICAgICAg ICBwTGluay5ocmVmID0gIiMiCiAgICB9IGVsc2UgewogICAgICAgIHBMaW5rLnJl bW92ZUNsYXNzTmFtZSgiZGlzYWJsZWQiKTsKICAgICAgICBwTGluay5ocmVmID0g IkphdmFTY3JpcHQ6c2hvd0ltYWdlKCIgKyAoaW5kZXggLSAxKSArICIpIjsKICAg IH0KCiAgICBpbmRleCsrOwogICAgdmFyIG5MaW5rID0gZnZ3LmRvd24oJy5uZXh0 Jyk7CiAgICBpZiAoaW5kZXggPT0gZmlndXJlcy5sZW5ndGgpIHsKICAgICAgICBu TGluay5hZGRDbGFzc05hbWUoImRpc2FibGVkIik7CiAgICAgICAgbkxpbmsuaHJl ZiA9ICIjIgogICAgfSBlbHNlIHsKICAgICAgICBuTGluay5yZW1vdmVDbGFzc05h bWUoImRpc2FibGVkIik7CiAgICAgICAgbkxpbmsuaHJlZiA9ICJKYXZhU2NyaXB0 OnNob3dJbWFnZSgiICsgaW5kZXggKyAiKSI7CiAgICB9CgogICAgZnZ3LmRvd24o Jy5pbmRleCcpLmlubmVySFRNTCA9IGluZGV4OwoKICAgIC8qIGZpZ3VyZSB0b29s cyAqLwogICAgdmFyIGZ0SHRtbCA9ICcnOwoKICAgIGlmIChmaWd1cmVNZXRhLndl bykgewogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlndXJlTWV0YS53ZW8u bGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIHdlbyA9IGZpZ3VyZU1ldGEu d2VvW2ldOwogICAgICAgICAgICBpZiAod2VvICYmIHdlby5oKSB7CiAgICAgICAg ICAgICAgICBmdEh0bWwgKz0gJzxkaXYgY2xhc3M9IndlbyI+PGEgdGl0bGU9IlZp ZXcgdGhpcyBXZWIgRW5oYW5jZWQgT2JqZWN0JwogICAgICAgICAgICAgICAgaWYg KHdlby50KSB7IGZ0SHRtbCArPSAnOiAnICsgd2VvLnQ7IH0KICAgICAgICAgICAg ICAgIGZ0SHRtbCArPSAnIiBocmVmPSInICsgd2VvLmggKyAnIiB0YXJnZXQ9Il9i bGFuayI+PHNwYW4+V2ViIEVuaGFuY2VkIE9iamVjdDwvc3Bhbj48L2E+PC9kaXY+ JzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCgogICAgaHRtbCA9ICcn OwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncmFwaGljcy5sZW5ndGg7IGkrKykg ewogICAgICAgIGlmIChncmFwaGljc1tpXS5sKSB7CiAgICAgICAgICAgIGlmICho dG1sKSBodG1sICs9ICc8YnIgLz4nOyAvLyBpcyBub3QgZmlyc3QgbGluawogICAg ICAgICAgICBodG1sICs9ICc8YSBocmVmPSInICsgd2luZG93LmZpZ3VyZVZpZXdl ci5wYXRoICsgJy9pbWFnZXMvbGFyZ2UvJyArIGdyYXBoaWNzW2ldLmwgKyAnIj48 c3Bhbj5IaWdoIFJlc29sdXRpb24gSW1hZ2U8L3NwYW4+PC9hPic7CiAgICAgICAg fQogICAgfQogICAgaWYgKGh0bWwpIGZ0SHRtbCArPSAnPGRpdiBjbGFzcz0iaGln aFJlcyI+JyArIGh0bWwgKyAnPC9kaXY+JzsKCiAgICBmdEh0bWwgKz0gJzxkaXYg Y2xhc3M9InBwdCI+PGEgdGl0bGU9IkRvd25sb2FkIE1TIFBvd2VyUG9pbnQgU2xp ZGUiIGhyZWY9Ii9hY3Rpb24vZG93bmxvYWRGaWd1cmVzP2RvaT0nICsgd2luZG93 LmZpZ3VyZVZpZXdlci5kb2kgKyAnJmlkPScgKyBmaWd1cmVNZXRhLmkgKyAnIj5c CiAgICAgICAgICAgICAgICAgIDxzcGFuPlBvd2VyUG9pbnQgU2xpZGU8L3NwYW4+ XAogICAgICAgICAgICAgICA8L2E+PC9kaXY+JzsKCiAgICBmdncuZG93bignI2Zp Z1Rvb2xzJykuaW5uZXJIVE1MID0gZnRIdG1sOwp9CgpmdW5jdGlvbiByZXF1ZXN0 RmlndXJlcyh1cmwpIHsKICAgIHJlcXVlc3RGaWd1cmVzKCcvYWN0aW9uL3Nob3dG dWxsUG9wdXA/aWQ9ZmlndXJlSW5mbyZkb2k9MTAuMTAyMS9hYzA2MDEyMGEnKTsK ICAgIHNob3dMb2FkaW5nKCk7CgogICAgbmV3IEFqYXguUmVxdWVzdCh1cmwsIHsK ICAgICAgICBvblN1Y2Nlc3M6IGZ1bmN0aW9uKHRyYW5zcG9ydCkgewogICAgICAg ICAgICBhbGVydCh0cmFuc3BvcnQucmVzcG9uc2VUZXh0KTsKICAgICAgICAgICAg ZGlzcGxheUZpZ3VyZUJyb3dzZXIoKTsKICAgICAgICB9CiAgICB9KTsKfQoKZnVu Y3Rpb24gc2hvd0xvYWRpbmcoKSB7CiAgICBhbGVydCgiTG9hZGluZyIpOwp9Cgpm dW5jdGlvbiBkaXNwbGF5RmlndXJlQnJvd3NlcigpIHsKICAgIGFsZXJ0KCJMb2Fk ZWQiKTsKfQpmdW5jdGlvbiBwb3BSZWYyKGlkcykgewoKfQoKZnVuY3Rpb24gaW5p dFJlZmVyZW5jZXNCYWxvb24obGluaywgaWRzKSB7CiAgICBpZiAoIWlkcykgcmV0 dXJuOwogICAgbGluayA9ICQobGluayk7CiAgICB2YXIgYnYgPSBsaW5rLm5leHQo KTsKICAgIGlmICghYnYgfHwgYnYudGFnTmFtZS50b0xvd2VyQ2FzZSgpIT0gJ3Nw YW4nIHx8IGJ2LmNsYXNzTmFtZSE9J3JlZicpIHsKICAgICAgICBpZiAodHlwZW9m IGlkcyA9PSAic3RyaW5nIikgaWRzID0gaWRzLnNwbGl0KCcgJyk7CiAgICAgICAg dmFyIGNvbnRlbnQgPSAiIjsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlk cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB2YXIgcmVmTGFiZWwgPSAkKGlk c1tpXSkuZG93bignLnJlZkxhYmVsJyk7CiAgICAgICAgICAgIGlmIChyZWZMYWJl bCAmJiBpZHMubGVuZ3RoID09IDEpewogICAgICAgICAgICAgICAgLy9yZW1vdmUg bGFiZWwgb25seSBmb3IgZGlzcGxheSBwdXJwb3Nlcy4KICAgICAgICAgICAgICAg IHZhciBsYWJlbCA9IHJlZkxhYmVsLmlubmVySFRNTDsKICAgICAgICAgICAgICAg IHJlZkxhYmVsLmlubmVySFRNTD0iIjsKICAgICAgICAgICAgICAgIGNvbnRlbnQg Kz0gJzxzcGFuPicgKyAkKGlkc1tpXSkuaW5uZXJIVE1MICsgIjwvc3Bhbj4iOwog ICAgICAgICAgICAgICAgLy9pbnNlcnQgaXQgYmFjayBhZnRlciBkaXNwbGF5IGlu Y2FzZSB0aGUgc2FtZSByZWZlcmVuY2UgaXMgdXNlZCB3aXRoIGFub3RoZXIgb25l IChtdWx0aXBsZSByZWZlcmVuY2VzIHNob3VsZCBkaXNwbGF5IGxhYmVscykKICAg ICAgICAgICAgICAgIHJlZkxhYmVsLmlubmVySFRNTD1sYWJlbDsKICAgICAgICAg ICAgfWVsc2V7CiAgICAgICAgICAgICAgICBjb250ZW50ICs9ICc8c3Bhbj4nICsg JChpZHNbaV0pLmlubmVySFRNTCArICI8L3NwYW4+IjsKICAgICAgICAgICAgfQog ICAgICAgIH0KICAgICAgICBsaW5rLmluc2VydCh7YWZ0ZXI6ICc8c3BhbiBjbGFz cz0icmVmIj48c3BhbiBjbGFzcz0iYmFsbG9vbi13cmFwIj48c3BhbiBjbGFzcz0i YmFsbG9vbiI+PGEgdGl0bGU9IkhpZGUgUmVmZXJlbmNlIEluZm9ybWF0aW9uIiBv bmNsaWNrPSJoaWRlUmVmKHRoaXMpOyByZXR1cm4gZmFsc2U7IiBocmVmPSJKYXZh U2NyaXB0OnZvaWQoMCk7IiBjbGFzcz0iY2xvc2UiPjwvYT4nICsgY29udGVudCAr ICc8YSBjbGFzcz0icmVmTGluayIgdGl0bGU9IlZpZXcgUmVmZXJlbmNlcyIgb25j bGljaz0iaGlkZVJlZih0aGlzKTsiIGhyZWY9IiNyZWZlcmVuY2VzIj5WaWV3IEZ1 bGwgUmVmZXJlbmNlIExpc3Q8L2E+PC9zcGFuPjwvc3Bhbj48L3NwYW4+J30pOwog ICAgfQp9Ci8vYXR5cG9uIG1ldGhvZApmdW5jdGlvbiBzZXR1cE5leHRQcmV2KGZp Z3VyZU5hdiwgZG9pRmlndXJlLCBpbmRleCl7CiAgICB2YXIgY3VycmVudEltYWdl cyA9IGRvaUZpZ3VyZS5pbWFnZXM7CiAgICB2YXIgc2l6ZSA9IGN1cnJlbnRJbWFn ZXMubGVuZ3RoOwogICAgaWYgKHNpemU9PTEpewogICAgICAgICQoZmlndXJlTmF2 KS5hZGRDbGFzc05hbWUoImRpc2FibGVkIik7Ly9ieSBkZWZhdWx0CiAgICAgICAg ZmlndXJlTmF2LnN0eWxlLmRpc3BsYXk9Im5vbmUiOwogICAgICAgIHJldHVybjsK ICAgIH07CiAgICBmaWd1cmVOYXYuc3R5bGUuZGlzcGxheT0iYmxvY2siOwogICAg dmFyIGRvaSA9IGRvaUZpZ3VyZS5kb2k7CiAgICB2YXIgbkxpbmsgPSAkKGZpZ3Vy ZU5hdikuZG93bignLm5leHQnKTsKICAgIHZhciBwcmV2TGluayA9ICQoZmlndXJl TmF2KS5kb3duKCcucHJldicpOwogICAgaWYgKGluZGV4ID09IHNpemUtMSl7Ly9p bmRleCBpcyBsYXN0LCBkaXNhYmxlIG5leHQgYW5kIHNldCBwcmV2aW91cwogICAg ICAgIG5MaW5rLmFkZENsYXNzTmFtZSgiZGlzYWJsZWQiKTsKICAgICAgICBwcmV2 TGluay5yZW1vdmVDbGFzc05hbWUoImRpc2FibGVkIik7CiAgICAgICAgcHJldkxp bmsuc3RvcE9ic2VydmluZygnY2xpY2snLHByZXZFdmVudCk7CiAgICAgICAgdmFy IHByZXZFdmVudCA9IGZ1bmN0aW9uKGUpe2NoYW5nZUltYWdlKHRoaXMsaW5kZXgt MSxkb2kpOyBFdmVudC5zdG9wKGUpfQogICAgICAgIHByZXZMaW5rLm9ic2VydmUo J2NsaWNrJywgcHJldkV2ZW50KTsKICAgIH1lbHNlIGlmKGluZGV4ID09IDApeyAv L2luZGV4IGlzIGZpcnN0LCBkaXNhYmxlIHByZXYgYW5kIHNldCBuZXh0CiAgICAg ICAgcHJldkxpbmsuYWRkQ2xhc3NOYW1lKCJkaXNhYmxlZCIpOwogICAgICAgIG5M aW5rLnJlbW92ZUNsYXNzTmFtZSgiZGlzYWJsZWQiKTsKICAgICAgICBuTGluay5z dG9wT2JzZXJ2aW5nKCdjbGljaycsbmV4dEV2ZW50KTsKICAgICAgICB2YXIgbmV4 dEV2ZW50ID0gZnVuY3Rpb24oZSl7Y2hhbmdlSW1hZ2UodGhpcyxpbmRleCsxLGRv aSk7IEV2ZW50LnN0b3AoZSl9OwogICAgICAgIG5MaW5rLm9ic2VydmUoJ2NsaWNr JywgbmV4dEV2ZW50KQogICAgfWVsc2V7CiAgICAgICAgcHJldkxpbmsucmVtb3Zl Q2xhc3NOYW1lKCJkaXNhYmxlZCIpOwogICAgICAgIHByZXZMaW5rLnN0b3BPYnNl cnZpbmcoJ2NsaWNrJyxwcmV2RXZlbnQpOwogICAgICAgIHZhciBwcmV2RXZlbnQg PSBmdW5jdGlvbihlKXtjaGFuZ2VJbWFnZSh0aGlzLGluZGV4LTEsZG9pKTsgRXZl bnQuc3RvcChlKX07CiAgICAgICAgcHJldkxpbmsub2JzZXJ2ZSgnY2xpY2snLHBy ZXZFdmVudCkKICAgICAgICBuTGluay5yZW1vdmVDbGFzc05hbWUoImRpc2FibGVk Iik7CiAgICAgICAgbkxpbmsuc3RvcE9ic2VydmluZygnY2xpY2snLG5leHRFdmVu dCk7CiAgICAgICAgdmFyIG5leHRFdmVudCA9IGZ1bmN0aW9uKGUpe2NoYW5nZUlt YWdlKHRoaXMsaW5kZXgrMSxkb2kpOyBFdmVudC5zdG9wKGUpfTsKICAgICAgICBu TGluay5vYnNlcnZlKCdjbGljaycsbmV4dEV2ZW50KTsKICAgICB9CiAgICBmaWd1 cmVOYXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NwYW4nKVswXS5pbm5lckhUTUw9 J0ZpZ3VyZSAnICsgZXZhbChpbmRleCsxKSArICcgb2YgJyArIHNpemU7Cn0KCmZ1 bmN0aW9uIGNoYW5nZUltYWdlKG5hdkxpbmssIGluZGV4LCBkb2kpewogICAgdmFy IGZpZ3VyZVRyYXkgPSBuYXZMaW5rLnBhcmVudE5vZGUucGFyZW50Tm9kZS5wYXJl bnROb2RlOwogICAgdmFyIGltZ1RhZyA9ICQoZmlndXJlVHJheSkuZG93bignLmFy dGljbGVGaWd1cmUnKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1nJylbMF07CiAg ICB2YXIgZG9pRmlndXJlID0gZ2V0RG9pRmlndXJlcyhkb2kpOwogICAgaWYgKCFk b2lGaWd1cmUpIHJldHVybjsKCWltZ1RhZy5zdHlsZS5ib3JkZXI9IjAiOwoJaW1n VGFnLnNyYz0iL3RlbXBsYXRlcy9qc3AvX3N0eWxlMi9fYWNocy9pbWFnZXMvbG9h ZGluZy5naWYiOwogICAgc2V0VGltZW91dChmdW5jdGlvbigpIHt1cGRhdGVGaWdJ bWcoZG9pRmlndXJlLCBpbmRleCwgaW1nVGFnKTsgaW1nVGFnLnN0eWxlLmJvcmRl cj0iMXB4IHNvbGlkICNjY2MiOyB9LCA1MDApOwogICAgdmFyIGZpZ3VyZU5hdiA9 ICQoaW1nVGFnKS51cCgnLmZpZ3VyZVRyYXknKS5kb3duKCcuZmlndXJlTmF2Jyk7 CiAgICBzZXR1cE5leHRQcmV2KGZpZ3VyZU5hdiwgZG9pRmlndXJlLCBpbmRleCk7 Cn0KZnVuY3Rpb24gZ2V0RG9pSW5kZXgoZG9pKXsKICAgIHZhciBmaWd1cmVzID0g d2luZG93LmZpZ3VyZVZpZXdlcjsKICAgIGlmICghZmlndXJlcykgcmV0dXJuIC0x OwogICAgdmFyIG1heCA9IGZpZ3VyZXMubGVuZ3RoOwogICAgZm9yICh2YXIgY291 bnQ9MDsgY291bnQgPCBtYXg7IGNvdW50KyspIHsKICAgICAgICBpZiAoZmlndXJl c1tjb3VudF0uZG9pID09IGRvaSl7CiAgICAgICAgICAgcmV0dXJuIGNvdW50Owog ICAgICAgIH0KICAgIH0KICAgIHJldHVybiAtMTsKfQpmdW5jdGlvbiBnZXREb2lG aWd1cmVzKGRvaSl7CiAgICB2YXIgZG9pRmlndXJlOwogICAgdmFyIGZpZ3VyZXMg PSB3aW5kb3cuZmlndXJlVmlld2VyOwogICAgaWYgKCFmaWd1cmVzKSByZXR1cm47 CiAgICB2YXIgbWF4ID0gZmlndXJlcy5sZW5ndGg7CiAgICBmb3IgKHZhciBjb3Vu dD0wOyBjb3VudCA8IG1heDsgY291bnQrKykgewogICAgICAgIGlmIChmaWd1cmVz W2NvdW50XS5kb2kgPT0gZG9pKXsKICAgICAgICAgICByZXR1cm4gZG9pRmlndXJl PWZpZ3VyZXNbY291bnRdOwogICAgICAgIH0KICAgIH0KfQoKZnVuY3Rpb24gYWRk RmlndXJlKGRvaSwgcGF0aCwgaW1hZ2VzLCBpc1RvY0ZpZ3VyZSl7CiAgICB2YXIg ZmlndXJlVmlld2VyID0gd2luZG93LmZpZ3VyZVZpZXdlcjsKICAgIHZhciBmaWd1 cmUgPSB7ZG9pOmRvaSxwYXRoOnBhdGgsaW1hZ2VzOltpbWFnZXNdfTsKICAgIGlm IChpc1RvY0ZpZ3VyZSkgZmlndXJlLmlzVG9jRmlndXJlID0gdHJ1ZTsKICAgIHZh ciBkb2lJbmRleCA9IGdldERvaUluZGV4KGRvaSk7CiAgICBpZiAoIWZpZ3VyZVZp ZXdlcil7CiAgICAgICAgZmlndXJlVmlld2VyID0gbmV3IEFycmF5KCk7CiAgICAg ICAgZmlndXJlVmlld2VyWzBdPWZpZ3VyZTsKICAgIH1lbHNlIGlmKGRvaUluZGV4 ID4gLTEpewogICAgICAgIHZhciBkb2lJbWFnZXMgPSBmaWd1cmVWaWV3ZXJbZG9p SW5kZXhdLmltYWdlczsKICAgICAgICBkb2lJbWFnZXNbZG9pSW1hZ2VzLmxlbmd0 aF0gPSBpbWFnZXM7CiAgICAgICAgZmlndXJlVmlld2VyW2RvaUluZGV4XS5pbWFn ZXMgPSBkb2lJbWFnZXM7CiAgICB9ZWxzZXsKICAgICAgICB2YXIgc2l6ZSA9IGZp Z3VyZVZpZXdlci5sZW5ndGg7CiAgICAgICAgZmlndXJlVmlld2VyW3NpemVdPWZp Z3VyZTsKICAgIH0KICAgIHdpbmRvdy5maWd1cmVWaWV3ZXIgPSBmaWd1cmVWaWV3 ZXI7Cn0KLy9hZGRlZCBieSBBdHlwb24KZnVuY3Rpb24gcHJlcGFyZVRodW1Gcm9t Rm9ybShmb3JtKXsKICAgIGlmICghZm9ybSkgcmV0dXJuOwogICAgaWYgKCFmb3Jt LmRvaSkgcmV0dXJuOwogICAgdmFyIGRvaUlucHV0cyA9IGZvcm0uZ2V0SW5wdXRz KCdjaGVja2JveCcsJ2RvaScpOwogICAgdmFyIG1heD1kb2lJbnB1dHMubGVuZ3Ro OwogICAgdmFyIGRvaSxpbnB1dCwgc3ViamVjdDsKCXZhciB0aHVtYnM9MDsKICAg IGZvciAodmFyIGNvdW50PTA7IGNvdW50IDwgbWF4OyBjb3VudCsrKSB7CiAgICAg ICAgLy9kZXRlcm1pbmUgaWYgdGhlIGFydGljbGUgaGFzIHRodW1ibmFpbHMKICAg ICAgICBpbnB1dCA9ICQoZG9pSW5wdXRzW2NvdW50XSk7CiAgICAgICAgZG9pPSBp bnB1dC52YWx1ZTsKICAgICAgICBpZiAoZ2V0RG9pRmlndXJlcyhkb2kpKXsKICAg ICAgICAgICAgaW5wdXQucGFyZW50Tm9kZS5wYXJlbnROb2RlLmdldEVsZW1lbnRz QnlUYWdOYW1lKCdkaXYnKVsxXS5zdHlsZS5kaXNwbGF5PSdibG9jayc7CgkJCS8v IHRodW1icyB3aWxsIHJlbWFpbiAwIHVubGVzcyB0aGVyZSBhcmUgdGh1bWJuYWls cyBvbiB0aGUgcGFnZQoJCQl0aHVtYnM9MTsKICAgICAgICB9CiAgICB9CgoJLy8g RG8gbm90IGRpc3BsYXkgc2hvdy9oaWRlIGJ1dHRvbiBpZiB0aGVyZSBhcmVuJ3Qg YW55IHRodW1ibmFpbHMgb24gdGhlIHBhZ2UKCWlmICh0aHVtYnM9PTApIHsKCQkk KCdhcnRpY2xlQXJlYScpLnNlbGVjdCgnYS5zaG93VGh1bWJzJylbMF0uaGlkZSgp OwoJCWlmICgkKCdhcnRpY2xlQXJlYScpLnNlbGVjdCgnYS5zaG93VGh1bWJzJylb MV0pICQoJ2FydGljbGVBcmVhJykuc2VsZWN0KCdhLnNob3dUaHVtYnMnKVsxXS5o aWRlKCk7Cgl9CgoJLy8gRXhjbHVkZSBFeHBsb3JlciBmcm9tIGxvYWRpbmcgdGhl IHRodW1ibmFpbHMgYXQgcGFnZSBsb2FkCglpZiAoIVByb3RvdHlwZS5Ccm93c2Vy LklFKSBvcGVuTXVsdGlUcmF5cyhmb3JtLmRvd24oJy5zaG93VGh1bWJzJykpOwoK ICAgIHZhciB0b2NOYXYgPSAkKCd0b2NOYXYnKTsKICAgIGlmICghdG9jTmF2KSBy ZXR1cm47CiAgICB2YXIgc3ViamVjdHMgPSAkJCgnZGl2LnN1YmplY3QnKTsKICAg IGlmICghc3ViamVjdHMgfHwgc3ViamVjdHMubGVuZ3RoID09IDApIHJldHVybjsK ICAgIHZhciB0b2NIdG1sID0gICI8aDQ+SW4gdGhpcyBpc3N1ZTo8L2g0PiA8dWw+ IjsKICAgIGZvciAodmFyIGNvdW50ID0gMDsgY291bnQgPCBzdWJqZWN0cy5sZW5n dGg7IGNvdW50KyspewogICAgICAgc3ViamVjdCA9ICQoc3ViamVjdHNbY291bnRd KTsKICAgICAgIHRvY0h0bWwgKz0gJzxsaT48YSBocmVmPSIjJyArIHN1YmplY3Qu dXAoKS5pZCArJyI+JyArIHN1YmplY3QuaW5uZXJIVE1MICsgJzwvYT48L2xpPicK ICAgIH0KICAgIHRvY0h0bWwgKz0gJzwvdWw+JzsKICAgIHRvY05hdi5pbm5lckhU TUw9dG9jSHRtbDsKfQovL2F0eXBvbgpmdW5jdGlvbiBwcmVwYXJlVGh1bWJuYWls cygpewogICAgdmFyIGZvcm0gPSAkKCd0b2NBcnRpY2xlcycpOwogICAgcHJlcGFy ZVRodW1Gcm9tRm9ybShmb3JtKTsKfQovL2F0eXBvbgpmdW5jdGlvbiBwcmVwYXJl VGh1bWJGcm9tVGFiKHRhYil7CiAgICB2YXIgZm9ybSA9ICQodGFiKS5kb3duKCdm b3JtJyk7CiAgICBwcmVwYXJlVGh1bUZyb21Gb3JtKGZvcm0pOwp9CkV2ZW50Lm9i c2VydmUod2luZG93LCAnbG9hZCcsIHByZXBhcmVUaHVtYm5haWxzKTsKCi8vIEF0 eXBvbiBKUwpmdW5jdGlvbiBoaWRlQW5kU2hvdyhoaWRlVGhpcywgc2hvd1RoaXMs IGNzc0NsYXNzRm9yU2hvd24sIGhpZGVUYWIsIHNob3dUYWIpIHsKICAgIGhpZGVU aGlzID0gJChoaWRlVGhpcyk7CiAgICBzaG93VGhpcyA9ICQoc2hvd1RoaXMpOwog ICAgaWYgKGhpZGVUaGlzICYmIGhpZGVUaGlzLnN0eWxlLmRpc3BsYXkgIT0gJ25v bmUnKSB7CiAgICAgICAgaWYgKGNzc0NsYXNzRm9yU2hvd24pIHsKICAgICAgICAg ICAgJChoaWRlVGFiKS5yZW1vdmVDbGFzc05hbWUoY3NzQ2xhc3NGb3JTaG93bik7 CiAgICAgICAgfQogICAgICAgIEVmZmVjdC5GYWRlKGhpZGVUaGlzLCB7ZHVyYXRp b246MC4zfSk7CiAgICB9CiAgICBpZiAoc2hvd1RoaXMgJiYgc2hvd1RoaXMuc3R5 bGUuZGlzcGxheSA9PSAnbm9uZScpIHsKICAgICAgICBpZiAoY3NzQ2xhc3NGb3JT aG93bikgewogICAgICAgICAgICAkKHNob3dUYWIpLmFkZENsYXNzTmFtZShjc3ND bGFzc0ZvclNob3duKTsKICAgICAgICB9CiAgICAgICAgRWZmZWN0LkFwcGVhcihz aG93VGhpcywge2R1cmF0aW9uOjAuM30pOwogICAgfQp9CgpmdW5jdGlvbiB0b2dn bGVEaXNwbGF5KGVsZW0pIHsKICAgIGVsZW0gPSAkKGVsZW0pOwoJaWYgKGVsZW0u c3R5bGUuZGlzcGxheSA9PSAibm9uZSIpIHsKCQlFZmZlY3QuQmxpbmREb3duKGVs ZW0sIHtkdXJhdGlvbjogMC4zfSk7Cgl9CgllbHNlIEVmZmVjdC5CbGluZFVwKGVs ZW0sIHtkdXJhdGlvbjogMC4zfSk7Cn0KCmZ1bmN0aW9uIGpzb25mZWVkKGRhdGEp IHsKICAgIHZhciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZ2luRXJy b3JNZXNzYWdlJyk7CiAgICBlLmlubmVySFRNTCA9IGRhdGEubXNnOwoKICAgIC8v IFNldCBzb21lIGJhc2ljIG9wdGlvbnMgZm9yIHRoZSBjb29raWUKICAgIHZhciBv cHRpb25zID0geyBleHBpcmVzOiAwLCBwYXRoOiAnLycsIGRvbWFpbjogJy5hY3Mu b3JnJyB9OwoKICAgIC8vIFByZXNldCB0aGUgdmFsdWUgb2YgdGhlIGNvb2tpZQog ICAgdmFyIHZhbHVlID0gbnVsbDsKCiAgICAvLyBJZiB0aGUgc2Vzc2lvbiB3YXMg Y3JlYXRlZCwgc2V0IHRoZSBjb29raWUgdmFsdWUgdG8gdGhlIHNlc3Npb24gaWQK ICAgIGlmIChkYXRhLnNlc3Npb25pZCkgewogICAgICAgIHZhbHVlID0gZGF0YS5z ZXNzaW9uaWQ7CiAgICAgICAgLy8gQWN0dWFsbHkgY3JlYXRlIGhlIGNvb2tpZQog ICAgICAgIGpRdWVyeS5jb29raWUoJ0VSSUdIVFMnLCB2YWx1ZSwgb3B0aW9ucyk7 CiAgICAgICAgd2luZG93LmxvY2F0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoJ3JlZGlyZWN0VXJpJykudmFsdWUKICAgIH0KfQpmdW5jdGlvbiBkb0xvZ2lu KHNtSG9zdCkgewogICAgdmFyIHVzZXJuYW1lID0gZW5jb2RlVVJJQ29tcG9uZW50 KCQoJ2Fjc0lEJykudmFsdWUpOwogICAgdmFyIHBhc3N3b3JkID0gZW5jb2RlVVJJ Q29tcG9uZW50KCQoJ3Bhc3N3b3JkJykudmFsdWUpOwogICAgdmFyIHVybCA9IHNt SG9zdCArICcvcG9ydGFsL3NpZ25vbj91c2VybmFtZT0nICsgdXNlcm5hbWUgKyAn JnBhc3N3b3JkPScgKyBwYXNzd29yZDsKICAgIGpRdWVyeS5hamF4KHsKICAgICAg ICAgIHR5cGU6ICJHRVQiLAogICAgICAgICAgdXJsOiB1cmwsCiAgICAgICAgICBk YXRhVHlwZTogInNjcmlwdCIKICAgIH0pOwogICAgcmV0dXJuIGZhbHNlOwp9Ci8v QWRkZWQgYnkgQXR5cG9uOiBpZiB0aGVyZSBhcmUgZmV3ZXIgdGhhbiA1IGl0ZW1z IGluIGpvdXJuYWxIb21lLCBzZXQgcmFuZ2UuCmZ1bmN0aW9uIHNldFJhbmdlKGZv Y3VzTGlzdCl7CiAgICB2YXIgYXJ0aWNsZXMgPSAkKGZvY3VzTGlzdCkuZ2V0RWxl bWVudHNCeUNsYXNzTmFtZSgnYXJ0aWNsZUJveCcpOwogICAgdmFyIHJhbmdlID0g JChmb2N1c0xpc3QpLmRvd24oJ2Rpdi5yYW5nZScpOwogICAgdmFyIHNpemUgPSBh cnRpY2xlcy5sZW5ndGg7CiAgICBpZiAoc2l6ZSA8IDIpewogICAgICAgIHJhbmdl LnN0eWxlLmRpc3BsYXk9J25vbmUnOwogICAgICAgIHJlbW92ZVZpZXdBbGxMaW5r cyhmb2N1c0xpc3QpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmIChzaXpl IDwgNSl7CiAgICAgICAgcmFuZ2UuaW5uZXJIVE1MPSdOb3cgc2hvd2luZyAxJm5k YXNoOycgKyBzaXplOwogICAgICAgIHJlbW92ZVZpZXdBbGxMaW5rcyhmb2N1c0xp c3QpOwogICAgfQp9Ci8vQWRkZWQgYnkgQXR5cG9uOiBpZiB0aGVyZSBhcmUgZmV3 ZXIgdGhhbiA1IGl0ZW1zIGluIGpvdXJuYWxIb21lLCByZW1vdmUgIlZpZXcgQWxs IiBsaW5rcwpmdW5jdGlvbiByZW1vdmVWaWV3QWxsTGlua3MoZm9jdXNMaXN0KXsK ICAgICQoZm9jdXNMaXN0KS5kb3duKCdkaXYudmlld0FsbCcpLnN0eWxlLmRpc3Bs YXk9J25vbmUnOwogICAgJChmb2N1c0xpc3QpLmRvd24oJ2Rpdi52aWV3QWxsTGlu aycpLnN0eWxlLmRpc3BsYXk9J25vbmUnOwp9CgovLyBBbGV4IEtpbTogZnVuY3Rp b24gdGhhdCB3ZSdsbCBiZSB1c2luZyBvbiBzdGF0aWMgcGFnZXMKZnVuY3Rpb24g bG9hZEF1ZGlvKGxpbmspIHsKICAgIHZhciB3cmFwcGVyPSQobGluaykucGFyZW50 Tm9kZS5wYXJlbnROb2RlOwogICAgdmFyIGxvYWRMaW5rPSQod3JhcHBlcikuc2Vs ZWN0KCdkaXYuYnV0dG9uJylbMF07CiAgICB2YXIgYm94PSQod3JhcHBlcikuc2Vs ZWN0KCdkaXYuYXVkaW9Cb3gnKVswXTsKCWlmICgkKHdyYXBwZXIpLnNlbGVjdCgn ZGl2LmluZm8nKVswXSkgJCh3cmFwcGVyKS5zZWxlY3QoJ2Rpdi5pbmZvJylbMF0u c3R5bGUuZGlzcGxheT0ibm9uZSI7CiAgICBsb2FkTGluay5zdHlsZS5kaXNwbGF5 PSJub25lIjsKICAgIGJveC5zdHlsZS5kaXNwbGF5PSJibG9jayI7Cn0= ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=favicon.ico Content-Type: image/x-icon; name=favicon.ico Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/favicon.ico Content-Transfer-Encoding: Base64 AAABAAIAEBAAAAEACABoBQAAJgAAACAgAAABAAgAqAgAAI4FAAAoAAAAEAAAACAA AAABAAgAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAB9AAAAfwAAAHsZ AAB3LwYAbjoeAHM3GgB/QBoAQ0s/AH9KLQBkTzwAbVM/AHlSOQB6VTsANWdpADpy dgBSUEMAWmVdAF1oXwBWbWwASXRqAEVwcABIeHoAggAAAIMAAACEAAAAjgAAAJUA AACbAAAAmgwAAJQXAACXGQAAowAAAKcCAAC1BwAAvgAAALMMAACmEwAAqBMAAIgi AACUIgAAkSUAAJs2FQCbPhkAsiQAAKsxAACvMAAA1AQAAMQUAADEHAAAjEQZAINO MwA6eIEAAHu3ADaDkgAAi6oAH4yjABiOpQARk68AGpm1AByYtAAqjqIALJCjAACt 0QAAhP8AAJL/AACT/wAAl/8AAJn/AACa/wAAnP8AAJ//AACg/wAAov8AAKP/AACk /wAApf8AAKb/AACp/wAAqv8AAKv/AACu/wAAr/8AALfyAACx/wAAsv8AALP/AAC0 /wAAtf8AALb/AAC9/wAAwv8AAMb/ADHY/wBxz9wAjtnhAJHY4QCe/v8AwMDAAHcA AAACAAAAyAWRfJggBgAQFo4AUQWRfHgTBgBtBZF8AAAAAD0EkXwAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAgAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAzjORfOv1AABgE44AAAAGABQYjgAY7pB8wECRfP////+7QJF8jtYBAEUA AABUFY4AgAAQwBQYjgAY7pB8cAWRfP////8AAAAAPQSRfIgWjgB1C4F8twAAAAEA AAACAAAABBiOABgAAAAAAAAAcBaOAEIAAAAAAAAAVBaOAAAAAAAAAAAAAAAAAAwA AAACAAAAAQGQfADs/X9mAAAAAAAAAAMAAABuABoCoCAGAAAAAACgIAYABQAAAN/i gHysFo4ATxqAfKgBAAAAAADAAAAAAAAAAAACAAAAgAAAAAAAAADsF44AP2VLAFAi +QAAAADAAAAAAOAXjgACAAAAgAAAAAAAAACw708A5PWoAAIAAABDOlxEb2N1bWVu dHMgYW5kBwAAAHRpbmdzXHJ5Yzk2XERlc2t0b3BcZmF2aWNvbi5pY28A2YvUdwDg /X90F44AAAAAAGAL+QAqiNR3/+mQfA4QgXyoAQAAAAAAAAAAAAAAAAAAaBeOAGAL +QAmAAAAAAAAAC4QgXwmAAAABBiOAAIAAAAwAAAAJgAAAAAAAAAmAAAAVBeOACqI 1HcUGI4A85mDfDgQgXz/////LhCBfNZlSwCoAQAAYAv5ACYAAAC4F44AAAAAAAAA AAAAACsEGgAAAAAAAAAAAAAAACsdVA8bAAAAAAAAAAAAACscEVwMJ2QAAAAAAAAA ACsDBxI3FAopAQAAAAAAACsYJjU+ND8XLSoDAAAAACsZOBYuPCw9LxM5BgMAACsC KF0QMQ1ADjI6OwsgAQADISMFHiQIFTMwIAkfJSIYYklLAAAAV1ZYWgAAAFtIYgBe RUpOUFVZWlZQTUtHXgAAAGBES09SU1NST0tFYAAAAAAAYUVMT1FRT0xGYQAAAAAA AABfQ0dKSEZCXwAAAAAAAAAAAAAAQgAAAAAAAAAAAAAAAAAAAEE2YAAAAAAAAAAA AAAAAABgAAAAAAAAAAD8fwAA+D8AAPAfAADgDwAAwAcAAIADAAAAAQAAAAAAABw4 AACAAQAAwAMAAOAHAADwDwAA/v8AAP4/AAD+/wAAKAAAACAAAABAAAAAAQAIAAAA AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+a1sAf2pcAHttXwB+bFwAe25gAHlv YgBvd28Ad3BkAHhwYwB8cWQAf3JlAHVyaABydGsAcXVsAHN4bwBteXEAa3l3AGl7 dgBvfXYAZn56AHFzcQCbUzUAmlM2AJlUNwCaVDYAm1Q2AJxVNwCWVzwAmVU4AJxV OACcVzkAnVc5AJ5ZPACeWj0AoFw/AI9cRACLX0sAjF9IAJBbQwCRXEMAkF1EAJ9d QACgXEAAoV1AAKJfQwCiX0QAjWJMAIhkTwCUZEsAhmNTAIdkUACDZVcAgGpZAKJg RACkY0cApWVKAGKBfwA+nKwAOpyxADmfsQAvpr0AL6a+ADWitgA4oLMAM6O5ADSh uQBchocAXIOKAFuGiABah4kAV4mNAFiJjABPj5YAVYuQAFSLkQBSjZMAUY2UAE6Q mQBNkJoASZSfAGGCgABGlKQAQZqpAB2y0wAatdcAJ6zHACWtyQAlrsoAILDPAAC8 +gAAv/4AAMH/AADD/wAAxf8AAMb/AADI/wAAyf8AAM3/AADO/wANzv8AD87/ABfO /wAezf8AANH/AADT/wAA1P8AANX/AADX/wAI0P8ADND/AADY/wAA2v8AANz/AADe /wAmzP8AMd7/AADm/wAA5/8ABeX/AAjj/wAA6f8AAun/AADq/wAW5/8AHuf/ABvq /wAC8f8AAPX/AA3x/wAA+/8AAP//ACbp/wA35v8AN///AD///wBIxf8AV8H/AFf/ /wBb//8AwMDAAH9qWgAUGI4AGO6QfMBAkXz/////u0CRfI7WAQBFAAAAVBWOAIAA EMAUGI4AGO6QfHAFkXz/////AAAAAD0EkXyIFo4AdQuBfLcAAAABAAAAAgAAAAQY jgAYAAAAAAAAAHAWjgBCAAAAAAAAAFQWjgAAAAAAAAAAAAAAAAAMAAAAAgAAAAEB kHwA7P1/ZgAAAAAAAAADAAAAbgAaAqAgBgAAAAAAoCAGAAUAAADf4oB8rBaOAE8a gHyoAQAAAAAAwAAAAAAAAAAAAgAAAIAAAAAAAAAA7BeOAD9lSwBQIvkAAAAAwAAA AADgF44AAgAAAIAAAAAAAAAAsO9PAOT1qAACAAAAQzpcRG9jdW1lbnRzIGFuZAcA AAB0aW5nc1xyeWM5NlxEZXNrdG9wXGZhdmljb24uaWNvANmL1HcA4P1/dBeOAAAA AABgC/kAKojUd//pkHwOEIF8qAEAAAAAAAAAAAAAAAAAAGgXjgBgC/kAJgAAAAAA AAAuEIF8JgAAAAQYjgACAAAAMAAAACYAAAAAAAAAJgAAAFQXjgAqiNR3FBiOAPOZ g3w4EIF8/////y4QgXzWZUsAqAEAAGAL+QAmAAAAuBeOAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADY2AAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAA2FhY2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAANhYWFio2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYWGAYJHRY2AAAAAAAA AAAAAAAAAAAAAAAAAAAAAAA2FhYUOlVKFhY2AAAAAAAAAAAAAAAAAAAAAAAAAAAA NiwWFgdBWBIWFiI2AAAAAAAAAAAAAAAAAAAAAAAAADY3IBYWDzxONRYWFiM2AAAA AAAAAAAAAAAAAAAAAAA2OBYgKTQKORENAykWFjY2AAAAAAAAAAAAAAAAAAAANjgW FhZLQlBHT1A9ORYWFi42AAAAAAAAAAAAAAAAADYtFhYWFg5AJiQmJkABFhYWFis2 AAAAAAAAAAAAAAA2HjNDEEkxGU1UKjBUURcWDFNFKBs2AAAAAAAAAAAANhYWJVJV PycWBVUFFVUFFhZZTEiNFhY2AAAAAAAAADYWFhYfE1ZEHBYWMzo6MxYWKlcEAjIW FhY2AAAAAAA2FhYWFhYIPgsaFioqOkwzKhYWRlU7MhYWFhY2AAAANhYWFhYWFhYW FhYWMzpMOTozFhYdLyEWFhYWFhY2ADYqKioqKioqKioqKioqKhYqFioqKioqKioq KioqKio2AIJaZmtniAAAgWheAFpaWlpaWgBrWnkAAImKclprWmsAAGtaWlpeaWiK enBra3paWnpmiWtweomDamprZmtrAAAAAIlah2tza2hih3paWmaJWlpaWm1iamNr Xm1aawAAAAAAAHBpb2FsaWteZVprWlxebVyCa4lqbmpoYHEAAAAAAAAAAItygoB7 aGtqWlprd2haa1ppa2praWh4AAAAAAAAAAAAAH92dXBpXWpaWmWJWlpaWl9kamhq fQAAAAAAAAAAAAAAAIZ7dWpdWlpaWlpaWlpaXWlqa34AAAAAAAAAAAAAAAAAAIVq WlpaWlpaWlpqWlpba2uEAAAAAAAAAAAAAAAAAAAAAHpaWlpaWlpaWmpaWlpdfAAA AAAAAAAAAAAAAAAAAAAAAABeAFptWloAAFpaXnQAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAHpaWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFpaWlprAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAWlprawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAACJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAA///////+f////D////gf///wD///4Af//8AD//+AAf//AAD//gAAf/wA AD/4AAAf8AAAD+AAAAfAAAADgAAAAQAAAACBiBGAwAAAAeAAAAPwAAAH+AAAD/wA AB/+AAA//wAAf/+AAP//6GH///x////+D////h////7///////8= ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=atypon-print.css Content-Type: text/css; charset=UTF-8; name=atypon-print.css Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/css/atypon-print.css Content-Transfer-Encoding: 8bit body, #container { width: 100%; } ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=acspubslogo.gif Content-Type: image/gif; name=acspubslogo.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/acspubslogo.gif Content-Transfer-Encoding: Base64 R0lGODlh2AApAPf6AP///yBai/n7/MbU4YemwU17ohdThvf5+8nX4xRQhP7+/8jX 4/3+/vr8/RJPgxZShRNQhDdqlyFai8fV4vz9/pm0yuPq8MPS4BFOg9fi6vT3+UFy nFyGqneauPH1+C5kklaBp+Lp8MTT4JSvx/X3+qi/0vv8/Sdejj5wm+zx9R5YihlV h7TH2O7y9qS7z1WBpsHR3zZqlsrY5Ju1y+Hp7+ju89Ld51F+pEt6ofD098zZ5Ul4 oPb4+jhsmFmEqZeyyUNznRpViC1jkl2Hq+Do7yNcjClhkFuGqubs8qrA09rk7Ke+ 0RtWiDlsmJCtxR1Xid/n7vj6/ER0nVB9pK3C1Jq0y9Dc5mGKrb/Q3u/z997n7o6r xDNolW+UtM3a5U98o5GtxtHd5yZejrzN3B9Ziihgj9bg6UZ1niJbjMfW4mSMrliD qOnv9Eh4oOXr8dnj68XU4TBlk+3y9jdrl6e90c/b5o2rxLbJ2dzl7TRolXibucvZ 5IinwSRcjX6fvG2Ts9vk7Ep5oTptmZOvx8DQ3naZt6vB0+Tr8YupwxVRhRhUh1N/ pdfh6rrM2/L1+FeDqJizyr3O3dXg6X+gvJ22zIOjvlJ/pWqRsidfj7vN3Iyqw4qo wkV1nuft8iphkOrw9L7P3bDE1t3m7U58o+fu8563zXqdurfJ2TVplnKWtc7b5j9x m6O7z5KuxoWkv6zC1F6Iq2ePsFSApixjkbXI2LnL23udutji63OXtkJznI+sxYal wPP2+WuRsleCp7LG12WNr2KKrWySs6m/0qC4zTJnlBxXiXWYt5axyGaNr5WwyKW8 0GCJrDxvmkd2ny9lk4Ghva7D1Stika/E1dTf6IemwNPe6IChvcLS30x6olqFqZ+4 zbPG1ztumevw9Zy2zIKivrjL2miPsWOLrnmcuaK6zmmQsT1vmiVdjTFmlKG5zkd3 n2eOsKa90Hyeu7fK2nSYtnCVtISkv3GWtbHF1omowl+IrH2fu0Bxm26UtA9NggAA AAAAAAAAAAAAAAAAACH5BAEAAPoALAAAAADYACkAAAj/APUJHEiwIMEP5aRsUGGw ocOHECNKnEjRoYMYQiBezFixo8ePICNKAQBADrYXTEI+TJCAIoQgxlo6VBEggIGI EFiy/BiAxwWIPX8KxHdNjMqCGDAUDKYn0dGnEJsdAKCAJAyoBGFlyDAJYiJ2LBi5 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 kMFI3MRqGRAAOw== ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=title.gif Content-Type: image/gif; name=title.gif Content-Location: http://pubs.acs.org/appl/literatum/publisher/achs/journals/covergifs/jmcmar/title.gif Content-Transfer-Encoding: Base64 R0lGODlhjAFLAPf+AP79/ZsENv37/PLf5Z0JOpkBNMRsiZoDNfjt8f35+v78/fv2 +KEVRMFjgqkoU9ecsJwHOZsFN71Zevry9ZoCNawvWcBige/X3682Xv36+8VvjO/Y 4KUfTM+GnrA5YfDZ4enH0tGNpMRrieW/zKQbSaorVeG1xLE9ZN2puvXm6+K3xfDa 4fPg5rREafz3+Z8PP5sGOOvO2Pz4+fXn7PTk6aYgTbpSdackULE7Yvnw850KO8d0 kO/W3uGzwurL1efDz58OPsBhgd2qu/Pi6PHb4vv09tukttaYrdOQps6EnZ0LPJ4N Pd2rvLE8Y+3R2qUeS7xXebVHbKYhTaUdSpwIObI/ZbxYeb1ae+CxweG0w+W+y8Vt iq41XeW9yvHc4+fE0J8QQPbo7ffr76IWRaEUQ+rK1awwWaMYRtKPpe3S26stV54M Pfnx9NGLotqita84YLdKbujG0a83X/fs8Prz9evM1rtWeNebr96tvdult+S8yfbp 7fnv8ubBzffq7vTj6b1bfKASQeO4xqMZR75dfbNAZsl5lNyouaknUtCKoassVqMa SKQcSeS7yevN1+nJ1MFlhNearqETQsp7lbZJbe7U3a40XaIXRaoqVfPh58dzj/v1 98JnhdidsdSUqenI09WVqrA6YcFkg7hNcb5cfcJmhd6svd+wwNumuNSTqbRDab9f f+K2xa0yW8Nph+zP2eCywe3T3Ml3ktaZrb9ggMl4k60xWqkpVMVui9WWq/Xl6sZx jbVFat+vv6ARQd+uvvHd5O7V3acjT7VGa+jF0c6FnaciTrI+Zcp6lct+mKgmUfju 8cdyjtmgs8h1kct8lr9eftCJoc2Cm7lPcrlRdLNBZ8ZwjbZIbbdMcMx/mfLe5cyA mdGMo9mhtOO6yLdLb6glUefCzq0zXLhOcbpTddynuasuWLNCaLtVd7tUduO5x8Nq iNKOpct9l9iesdWXrLlQc9qjtch2kcNohtORp+bAzdOSqM2Bmtmfss2DnOzQ2c+H n8+IoJkAM////wAAACH5BAEAAP4ALAAAAACMAUsAAAj/AP0JHEiwoMGDCBMqXMiw ocOHECMmnGPlmo0hEgl+gAJkR8aPIEOKHEmypMmTKFMuVNCsTTQQKkma6WdsAcgh Z/r1Qxezp8+fQIMKHRpylE4hRCFi6IdIAEhNW+rkS5a0qtWrWLNihaLThNaESx04 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 ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=cart2.gif Content-Type: image/gif; name=cart2.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/cart2.gif Content-Transfer-Encoding: Base64 R0lGODlhDwALAIABADNmmQAAACH5BAEAAAEALAAAAAAPAAsAAAIehIOpCtHvYouy UojRvHbT9SXGOILmqS2eeGitCicFADs= ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=cover.gif Content-Type: image/gif; name=cover.gif Content-Location: http://pubs.acs.org/appl/literatum/publisher/achs/journals/covergifs/jmcmar/2008/jmcmar.2008.51.issue-6/cover.gif Content-Transfer-Encoding: Base64 R0lGODlhcwCYAPcAACY1Ki1JOg9SURNvby1ZVCthXC1wbipeYXchNGokMFspJk5O M3FnMmpgHFBYS1dmVVFzbXZ4V2tuT2Z2aWh7dHN6ZnJ1bmxRSUJ6hiiBe32CWWuC eXSFenqFaVuMbXrPZ3KXLxaOjRWzsCiYlTCOjC+jnSa5tzepqC+vriiboTe9whe8 2DDAvDrFxhfGwk2Rj1GdpVOjnFi3uEmtrneLhHyTi3mSiHmZk2iPjHKkmXCvr3eX pE67xGy8xFHDvG3DvUfDxlfFylnK0k/M02bGymvL1GXK1HbHynXM13PR2nPT50DL 4IchOZgiPYswLqslK70DVqoiQrMiRbsiR5whQIp2L4NkJpFVUYZ4TJFybKtwbaxU Ucw5Ou4iKcILUsMUTcUbTMgdScMSUMUZUMUjRsYiSskiRcgjSsorRsw2Q9IiTM81 RNJIO9ZaNdZWNtZRMd1mJtlmMt12KuJdJuNnJ+F6JuJ6HtBHRt1gYKGeNYeGWJOL UoWJZYOKeIiVeZOUbJeje6uXUqiScbGtU7CrcZG6SLTLVqHWbdW1KuiZHeSEHuSJ I+SDJuaUIuuoGe2zFfG7EvGzEtufJ86yUta0ZvXHDPnXB/PHEeXDK+zIMfffPfzo Av78AP3zAODMM8vQVs3Va9bjeNblZ+/KWe7Sau/rauzqUrLCGYaViYSbk4ialY6W i4aZpouim4akmpKknZanmJWmiompopOloZOqo5qrpZqrqJuzq5e0qZq4tI2xsq6x jqSsqKKzram1rKS6s6u6tKe3tLK8uLO1qLGNh625xpu2w4/DuarDurPCvbjFvLjI p7TaiofT2ZDO0IzZ56nJxbrFwrzKxLzNybXIw7rSy7nY1a/N1bHY4rTk563i4caz k8vNj8jMtdnqiOnuiPLzr+HirMHNycTLxsPSzMjUy8Ta08vb1MjY1dPb187Tz8rZ 58zi28ni2dLi3Njj29vlx8vo5drq5Nzt6dXn4trw7+rr2OTr6OLx7evx7uTz8er1 8+v49/b7+fDy7OfU0CH5BAAAAAAALAAAAABzAJgAAAj+AM8IHEjwTJmDBguWKaiQ ocOHECMSnCJw4UCLEjMmzLgQo8aKHSF6FPmx5EeKJi8SHAkR5UaJLC8ijBjzZcqb N2tW3JmS4kycB38y1AnTJs6jOMd8VEoS6VCTSolKJci0YdOHRFUWxTizo1CnEKs6 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 ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=icon-authorchoice.gif Content-Type: image/gif; name=icon-authorchoice.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/icon-authorchoice.gif Content-Transfer-Encoding: Base64 R0lGODlhcwATAPfCALu7u4iIiEVFRe7u7gEBARISEqqqqmdnZyMjI8zMzDQ0NFZW Vt3d3Xh4eP///5mZmb6+vvz8/Pz8+v39/f///fPz82oEAv7//2cDBf39/2kCA729 vfv9/GkCBWsDBGcDA//+/7+/v/T09Pj8+7i6uf38+vz//7y8vP3//r6+vPz8/vLy 8vz9+P//+2cDAWoDBmYCAvj4+GYEA/v7+/r7/WgEBv/9/vz7+fz6+/37/KtxcHsl JrSEhNi/wnccG6FvcHETE87OzsCWl97c3f7+///6/ru/vrmLjbKysG8QDv7//dm/ vqlucPHz8ry9v7i4utGzsf38+JpYWb2NjWoEAII0NJBERMqoqbi3s8qjpNze2//9 /Pj292oBBbOzsenV1r6NkMKYmWkDAWcBAMC+v7i6t+TW03oiIfHy9P76+2gEAmQE BvLy9ODMy2YEBbN9e8rKyr6+wLe3t729v8Wfno9IRmsFA9GxsqNjZI5EQby8umkB AvHn5sK+v2YAAOvh4Pv9+rm3unwoJoU0M8u3uMDAwLmLi/b29sbGxv/+/ZVRUNO/ wf7+/p5dYYo8PPz+/cKenraFiL+9wPbw8J5cXb2+wMGZmcC/vb7Av8elpOfT0oQ0 NXshILW1tWsBAaBgYahsbmsDAtzCw3keHfv7+WkDANCxr/v8/rq6uoQ0M2sDAOra 2u3h48vLy72RkPnz9/n7+Ovh4r6Vk2cFBv79+8akpb25uJtdXmUGAry8vpZUVvr5 9/7+/P37/vj9955eXp1dW2gAA////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAAMIALAAAAABzABMAAAj/ABHFqECwgggRK2IkcMDQ gbCHECNKnEixosWLGDNqtFhIhYQJOWgAkhDhUJMNFGg53MiypcuXMOP4ilCERoQZ sLagGcDiBBEQMIMKHfpSUgYcM0pEWBVJUaofk9jAmUC0qtWrD1OMiMLhkRAplrJ8 glFFyxBUWNOqbelExY1et+7sWmLGBB0YhFbIWcu3L0U9EyLwkMVKUJdgU2yMgmIi kN/Hfo1IiLWjRR08XN4MuuBIEwhbFAEUGABxwIECBAQkePgAAYECASaKJl3RwGoC LQO4RmBAGAABGHGzzMXBkC4QQCBd+AUsgxUHKEhQPHDgAUQFAUjrFsagwGoGCqxH /6QunqIAAMKEa2ywgIHvAgx+pwVQolEeCpTs+ODEx5UohlhMNIACAz5kgAIRZZcA ArQx4F5pBCIoTAINPNRAAg8UgCABDRBAoDAGuHYAaQ0cQIABBNAGYgIAKCAAAQcY KCJpwJn2mnULwqiiMCSwAAouX2SQyRWv9HDEBRRQ0MlEAcS2wGpNUtRAAQsE8CBE UT7pG3DCnAdebAQ4GVsBAAxQZZcNDGAAlxEBQEACAyCwGplmgilMAAuoiaCcwhwQ G0RloLCIH0mA0YYpOoRhAwWMXODFRAg0gGeMUVKk5pS9QRTppFs+dF6X6AnXpHyd fkpqm1yeR6p8uH36kGgCCP/gYkRPREBKLZuMcQYTfyiRSAsO8IKERC02qdsALSZo wAN/gshmsU0ySOqnn4oawKrAuZoiRAZcmyoA2KYH6kPxKQAuAKtBdIIEOeDAwUcT 3CDBKRGMkAYZEi2QqTCSCoOddqN115tpFT6kL0SSAsBgAmSOa60wdJ7pKnvuiQbu txCXeSZueA7AcHfo+RlRCm54MIsqVHzwggsdlLKHB2pUElF3ES0ojI2ppXvgayOS W0DNCAizQGqfdsjAwyHqOO5DAaDGW6fjJt2zcCYWYF3SAuzYhwsy1KABBmJ0EMoa GrzwgQyYQKa2WnNY4PbXH1iAQQ2eYNCBB5esrbdVrUAVEAIEgAcOwQYhEB7E3ogn rvjiFwUEADs= ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=icon-html.gif Content-Type: image/gif; name=icon-html.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/icon-html.gif Content-Transfer-Encoding: Base64 R0lGODlhEQARAPe/AP+WI9vw/fr//3qXwsfl+v7//+Li69Dx//////z//4WUsuHj 7d3t/XmZxYKfxPv+/8bz/4PLTuTKsM/2/8jv/+D1//biwsfr/8z1/93f6c3ru5Wl wNPw/WK4T4bMMNjd6tPp/Juyzejs9eTDrDCT5zaM4L7grNfy/3Bzhfj//6rE5+fQ zVOb2IifwoqkxlaV1ub6/6DBy9/g6F2y+cDr/+Pcu+/5//vkvKCrwOe+q8HNzP/m vHTC/NXe78Pc92KxK7Dg/unr4ofP/oOz4uDp95TM+vT9/cLZ2NHe887q/POdW+TK s9n1/8LSvOPm6m/AZvfy8KrHzW2wdvL//43Fd9fbwZnA6Pjgu5vVhbfVu8XI14LG h1edxoOQq73T7r7f7N3BscPL4Nzt/fH//97g6ub+//3//8jt/8nt/6PD7eTArPXm wdrywOf//937/2q2S+yiZsDi+uno8a/E5cTq/+Xz97rjpFuc1keZ567C4U+0/N/g 6+7fuej//57P89f7/264t7DS4obE7aiuv0mvIYvD8ZzRzOPk7IaewjyK37Pb+ZOi vM7y/7rH4KLZ/X6xW97y/oifw4KexpLK+r3o/6bP5uH3/nu7nvCmaYOex83m72+0 peL0/3aumN2zppW65eTFsI+euYmWseTn7Mrq/3257rrU8Lze93G+9FW2m+D06efC rnycxvf5/IiVscvm+uD00vn4+3KwPaW92pXPvtXu/uX//5upwTuiu/n9/2Kx9523 1a/I5X+6YvXgv////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAAL8ALAAAAAARABEAAAj/AH/9elDATIoxME5c8CJH oEMLvq7suLGGT40qOko1QuLwF4CPIEHCmZQnjQ+HIVNiQqMizJxDAlOGVOLm1ach VmT8krAEDKgRalbl8LRiSoBTfgoNcrhAgNNfAaIGIEBAkSMcTAUkQEDE1JcsTUTU igPklkMDrQoEOaIKlok3dxgkobThbK5YMTSwsUNlE64onOgsOltgVAlUWDz00pXq kZgDoRzuQeAEzwxaPy7x6CALxAFRDskkgPJCTxFDhLYA6gSJkSuHGWwY2UVCCKkI TxLxYkJBgcMPlirUCcFCkBQuszicodHFYY82ZWz10VQpEIE/EzBA8C1QSwsXiBxI C4qUidWA8w1Q/AoIADs= ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=icon-pdf-sm.gif Content-Type: image/gif; name=icon-pdf-sm.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/icon-pdf-sm.gif Content-Transfer-Encoding: Base64 R0lGODlhEQARANUjAOR8gd3Q0uCsr+lARuKUmN+4u/JVW3t8fJ2DhPDw8N7ExuVw dbEVG+FES9s+RDc3N1NGR4UPFOsoLzsHCc8YH+dYXqeNj3YOElgKDXI+QG9iY+OI jOZkaehMUqWlpm5ub+0cJMDAwNzd3v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAACMALAAAAAARABEAAAaGwNEoESoajyGhMnTwOJ/O QwQhBFmvWFDHw6AgEtnwFnOZhMLZjmj9CRkMDUdn3pEMOou1qC0MefQiAAKAe0kj foAcg4B8h396ioSNiJAEkoaUIgFzAYyYj4EEBR0KepOPARUFABwDIAMcp5ocgnoK Gx0anwR4hKaYFne+v30QGR/IycoPIUEAOw== ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=access_full.gif Content-Type: image/gif; name=access_full.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/access_full.gif Content-Transfer-Encoding: Base64 R0lGODlhDwASAPcAAP7+/ixUK1+pUl6nU33DdEqfOzmRKnjCanu0dWCrU0ecOGSr Vo/BkMiTQafMt1ylUF2mUYHDej6XL4zGjsiUQIvGjIN0Yz6YMNTd4XCtbFajSPXY VUOZM/XZTfbbTrbVzlaiSJPAl7fX0KnOu4zGjorAi0ydPYnBh3bCb4zCi0WWNsWd VOnBXo/HlM/Y2obFhJ3KrFqmTESPOWeqUXXDZbHSyEidOZ3JpmCnS2yvV8+ENdHa 3PXcU6OYeuDIuePm6OXKtMKeV3LBXvDRft/n65/Iq0abN9/r74XAe/bgaoC4b/jo mt6nV/LSOE2fPZrGo8emYFmkTUZfSfnphvbfX7rY0lmST6zQv12oT/bZRo/GlHGI dHrEcHWxaonAhuzJb8iRPZyZjdueSvfic/jmoUmeOvTdiX/DeGerX4LEfJfEneHs 8FhlXk+gPk6gPqDMr3jDaWKsVYDDecN+OafMt0ugPLunfbTUzEWaNW2tZVejSkuc O2GrVJLImXjDa0CWMPvzyZnFoYnGiIG+e4/Gk/bimV2oUGGrVD+KMFynTVqkTnu1 ZsinX+Pt8YfGhl6oVM7X2YTEgNqxV4KIhceZS43HkozCjcKAPpXInt3CtNLb3ffd W/jmfmCqUvDUgK/RxIahgnOzXlulT4/BkHu1dF6oUNTc4M+FQdSzX9Xe4t7q7mGo VZHBkoa2iFmlR4C/eICEg25fSPDbw4LFfbqgZ/LZXvnuqZa9nezHfqvRwLmHRODs 76LMspPDmIO8dfbaVYW/gWCoUXvEb7bLxfbigD2VLc6tZTmSKvbWR3KwbpGVjo7A jvvwo+7u7kqePKSahprGoz+WLqPKsQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAPABIAAAj/AAEIHEiwIBE0yeo4KeCs jA0FRlRYEXirDakFcQ4l6BTMkBs8iATmQTAsFQZTmna4gPSjWQCBq+h0OSRAQCks iWIU4PASwKMrN6qI+HCnxqdcvEz0HDACyZtAIVgtS0EIxp6ldHxBa7Rm1xFVJ+wE iSUQgjQlmEZ5ATbo1bMvgCTJAvCgyKI+lSo4mhWGBTNPuJgAEQUtFAlBkSIQoGWL 05IhxMQoUpPjRZozXA70MJNkDJVfp6L0miGHgB9QUFDV8rBpg45MekbhEAZH2YpC PLKAuTTHBwANJVzREMKITBNkFGDJkCIQhCUtLUgYm9KhwSQUf7YIbHVBQrRiFijp CmJzzECGgujTBwQAOw== ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=openAccess.gif Content-Type: image/gif; name=openAccess.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/openAccess.gif Content-Transfer-Encoding: Base64 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 AQEAOw== ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=access_free.gif Content-Type: image/gif; name=access_free.gif Content-Location: http://pubs.acs.org/templates/jsp/_style2/_achs/images/access_free.gif Content-Transfer-Encoding: Base64 R0lGODlhDwASAPcAAP////bdjPjko/TYefXZffLPWvLQXfbekPTWcWeozvTXd/Xa gfPVbffglPfgl/jjn/PSZWGhyvXbhfjmyPvsyNSAFPTWcPHPV8lrFPbWe/nnrvvs v1aTw5nA3PLSZmiqz/bfkfHcyDBlqPPTavfjnvfim/bciPHNU6TM4vTYe/Xchvrr yPnDI0WAvvHQZvXWmspzGPbVeYWgo/nosPjfnJ262vDJZJ3E3eyxGDNpq6jR5fLQ XuSkUPO7G/XJUPHNVYuy0/LRYdd+FNGJUEB5udiWUNmFAipeovjDIUeDwW+y08ht GPbejfnosmSkzF2bx/PTaWamzfLPWfbbiPDCMF+eyfTYfJnC3fjnrPLEMei3SWut 0fbcie7HW+u8K/rrvm2u0vTXdfS6DfDZyPbBIPbcji1hpfvosP7yzvLOafHSbPjm qViWxIG11eeyHsxpAtvDXeO7mvvKMPHMUGWlzFybx3aMk1mXxfrtv0J9vPDNUfXb h/vrueu2UPjkoZe82nWlzfvhkuadGPrru+CTFOysGNFwAv7pp+a3SF6dyPvhkWOj y2qr0Pa9D1uZxvzVX/ruw/jlppKszvrswNV/AvnpstO3U6bP5GCfyQAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAPABIAAAjbAAEIHEiwoMAkOpSAYZSA ToQbOQq2uLTlQ5RFmJ50EFEwD4oETiIkcsTmj5mCRK60qVLnDgdAQI4UrCEDDhUk ZLxYsiOp4KEsgfgMqiQggxsaBNHIOfMFy4MGAZhMwbFi4CNFkzQIcBBggQICafoM ZLGhSaQSByQMYODBCqGBjSCteWqCAAIIBRQYGSgGz9auYaAYOGGB0sAeM0ikXRvk hx4XFQb6iOGHi10IUuYU0FJkIIVCZUAMGLHjgoEuMEIQfCHIxh4VKdQgWhLH4AQe Qgy9wTBkjMHfBgMCADs= ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=aacr_160x160.jpg Content-Type: image/jpeg; name=aacr_160x160.jpg Content-Location: http://pubs.acs.org/sda/55224/aacr_160x160.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2Jl AGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQ DA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AA EQgAoACgAwERAAIRAQMRAf/EAKkAAAIDAQEBAQEAAAAAAAAAAAUGAgMEBwEACAkB AAIDAQEAAAAAAAAAAAAAAAACAQMEBQYQAAICAQMCBAUCAwUHAwUAAAECAwQFABES IQYxIhMHQVFhMhRxgUIjFZGhsVJiwdFyM0MkFuFjF4KyUyUmEQACAgEDAgMFBgQF BQAAAAAAARECAyESBDFBUWEicYGhEwWRsdEyQhTwojMVwfFiciPhUoKSsv/aAAwD AQACEQMRAD8A/KmgD7QB9oA9A0ASA0ATVdAFqoDoA0IhZvMd/gD4+HgNAG2tTZz0 HhoJgPY/DSyBQF3G/l2HXc/46Bkg+MJWp9L00dfbx9RgNQx9vibcdJhZJAlRntMp 2JhQlR+rHYaFjdh1eqGvG49CVC1XX1PEErxP6jfppLcWxopyKoZq2E9OI860voj7 0K8+P1BXfpqi2C/c0LLXsGcPUpTjnWmjtJ9u6MG22/hcD4/rrJfG69UXK6t0M3cH t/GwNmsu8T9Su3VT8tVWqzTg5C6MC4btiYXhEEIJ+nxGs+SzWp0N6SHODs3aHgQN w3Qbaev1ByY7ZKi33P2//R8TctMu0s59KP8A9NNbI72lj4mrOEcfnwzFjuOvidaV ce+E4/rqnjT7QB6NAEgNAE0C8hyG6/EDodtAEwvX5DQBfGm5+egApQoNKR00EpDV WxdWjSN29IsFVTsXbxJ+SjxY/pqCxV7snh+5TcF8Y/jQhgiCR25QGkDStwEhHgqj 4/LfStS0n3Fd32Eu160d6WO5L61iNyjycvUBIO24b4jTOSVqPXY2cxWPdYUoyW1m Cm08k4iDOCekQ28P11Pzdq1L8eOeh3LHd6+2FIwpOJYrbqrNE8LP6ZI6gunIHbRT Lv6Ma9HVwx17f7p7bztaSbClYOPIFZyokCqePqFN+SKx8N9LkttcMXHL/jUujo4e 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 a13KPAy1qqidhO4aVHtLuTDSpI1rMfhfjOgUxr+LMZH9QlgRuD02B1ryYnbJS3as /FFCejHlvdrDVLAzmNisSZ3J2sRZzFeZEWvGMSo9RYZA7M/5EihuqrxHTWFcCzWy 0baqyXj6vwG39ydX3G7QoZChRom6+BUZd7lqSGNbCy5iH0V4RCV1cV0VR968juen TRbh5LJtxv8AT7PTr4dw3IHS9/4FaL1IorT/AP8ALHt+N2jjUmwMh+UJCBIdo/T/ AH5fDbrq1cS8zp/U3+7bBG5fAz9ve48Hb3ZbYqjSht5a1eWe5Jfqw2Kwrwx7V0jV yxLq7u3IqNt+mnzcN5Mu6ziqrChtOe4K0IO9ye6fbOViuPXqW4beSymMytxSkQiW WpAY7IQiUnzv5k3HX47az4eBko1LUVraq9707Eu6NFj3a7as5zH3lguJDT7ls56Q OkXJq8oTjGoEh/m+Q9D5f9Wor9PuqNStcar7/s6E71PvJYT3V7LqjBXbsGROQwUm XSCGFITHJFlXlcO7NIpDR+sRxHj89Rl4GV7knWL7fH9MfgCujB/8kdvR9mS4mvJk IjZwaYpsQiRrRS4kkbyXSwlBkabgTyMfJdyOoPSz9lf5u57dL7p7x4dO3tI3KBZ7 27rx2d7srZenHNHWhr0YWWYKr71YUjfYKzDYlDt11p43Htjxur6y/ixbOWN2W948 VbpZmtDVs8r+cN+pM6oGjx8s0NiaA7OdnaWrGdhuPHzayY/p1k6uVpSP/KGk/sbH dy+t7wYmZMtA9/KYSN8zey+Os0IYJZXhuSc/QmSSRQkikbhlYjqfl1S30+y2uK29 Cq5nt3DeYIfddLHZdalPlsnjc1j61issdSKGSvd9ZneNpXdkeLb1OMmwO69R16as fAjK2q1tVtPWZX4+RG/QlhPcntSlY7NydhLpu9vUbWNu1Y4omRkmhsLHLG7SJuec 67qQNhv49NzLw8llkqoi7TXw8vIFZaFMHubgR6AMFr+X2dL203lj63H9TaQfzP8A lfzB1+7/AE6l8K+uq/q7/d+I9b/cO2aaN+1e6u6cli8hicjl8LTpzvdEaVZZ19GN BT2JeT1EiDnoOO3x36Ycf9SmOrratbt6dY16jN6HLfbnuHtrBZiTKZoWjYrxN/SZ KsUU4htHos7xyywBvTHmUcvu2Pw11uZhvkrtrHnOmnh0YlbjB2n7hdq4z8cXnvWv 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 9IXTRNz4feGXK7VjTxfmLutpkP/Z ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=sciFinder-TOC.gif Content-Type: image/gif; name=sciFinder-TOC.gif Content-Location: http://pubs.acs.org/sda/3023/sciFinder-TOC.gif Content-Transfer-Encoding: Base64 R0lGODlhtAAyAPcAANnr+OHu+tLn+Mvc6tzp9LW2tqipqgsIBsPHydbo+PH4/jpY p////9TV15KcpMva5K9oqoSIitPm9uPs9GZmZdTn9vH2+pVorHZ4edLh7Oz0+8TV 45ymrUZirbDF40ZbqdLb49Xo99rk7JaXmJpdpVdXVUhosMbM0urs7UlIRm5aprNb oneNxb7DxTk2NHKEvLzM2snU3vz9/87i8pap0VJqslhYptHn9vj7/ejy+01JncLS 3igmI66wstnn8dHd6au5xuPw+7a7wMpImu3u8Gx6nfP09Nzt+ePp7ePw+dzy/iU0 W/v8/s/n9u36//n8/9rs+bxSnsrW4Fdlru30/Pv//6KtuGV8u9Xl8dDh8Or0+/f7 /vD4+4Way/X8/sx6te/2/N/u+cfY5eHP5uPk5Y6Wms7f7fP5/ezx9aWz1tLk8fj8 /+ny/HdhqWllreTx+9/t+t3i5un0/d7l61Fml7nJ1sfa6eXy+/T4/lhytcrV6n6B gyMgHWNrsdDk9Ofy+0VDQNPl89Lo97fE3/H9/zUyMNnu/NTn+LCBudvr+t7s9vn5 +eTu+NbG4ubw+nByc8zR1i9BcOb0/ntytLHAzPv9/N/u+rbH1NPk82RRoS8sKfn8 /T88OYqNj+Dx/fb5/fDz+jxQnfP6/9rc39zf7/j+/+H1//b3+N7o8IdVouPv9xIZ KsHW7NTo99Hl9L/P3vf7/FNSUN3v/NXs+s/Y7BkXFOX5/+72/tzu+eDm8v/+/eno 893p99Tq+rG93U9OTExutPj5/ufw99Ts/F9iY1ROoBsmQtfq+NDl9X19fdXn+1xc W/z9/bnG0uHv/Nrr/dHi89Xr/c9WoW5sa/39/vr9/fX6/ur4/uv2/eTx+tTq+WNi YV9eXuzz/Gprbf3+/vv7/cnH5EFAPv39/cvf72xvcOA7kF1yoKvA39jr+9bj7pCQ j9Dg8c/Pz56hoj8/PdPl9dfg50tMTezg7/Hg7TAvLeLE39XT6eDV6ODs+eJtqu3s 9ry9vdfp+M7Y4Oz1/iH5BAAAAAAALAAAAAC0ADIAAAj/AAUIHEiwoMGDCAfeuCGB YcKHECNKnEixosWLAipo3Mixo8ePIFtVSCALijIJIUCqXMmypcuXMGPKZJmgps2b OHPq3JngmCEPrJ4lCMGzqNGjSJMqXcq0aYJ+UKNKnUq1atUEADyh63DFTphjVsOK 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 KrirAL0SBQR1Faho28OCPX69mzMgADs= ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=hamilton-pipette.gif Content-Type: image/gif; name=hamilton-pipette.gif Content-Location: http://pubs.acs.org/sda/32264/hamilton-pipette.gif Content-Transfer-Encoding: Base64 R0lGODlheABYAuYAAByLs9v0+7Pn+WZlaebp55G4yIitvE6s0La7t8nW2XWpvQ6X yv7//+X2+kfG89nm6VbL9bjK0KarpgOr6paalsfLyHfV9xJrjy+n1Mju+4fa9hi2 80icupLF1oiNiQui2ia682PP9iqaxHdbhqza6nu0yEq65Aqy8xBZdQmy7zrD82bJ 7NLb3dzf3dvt8tTX1dHe4Ti35g56pnbK6BWy7Si16vP29leivYhvlQdZiZbf9yxs kW2UrFjF7WS52GWpwmBAa7zDv4XL5BWs5Xy803quwI2SjaywrPb7+2zT9zG+84nT 7cTP05uNqqe4vZygndbb13vE3c/j6KOWseXv8Z3V6HyGhs3S0EjC7meyz9/j4Kmk uJGWkrK1saLj+nd9eJKTjwCu76KmodPU0dvb2ezx8Pb798PGwuPj4ZeGn46AmSau 4ZzN3oOFgXDO8aOankx/nrKrwHzS8dDX23h2dpSIiD6dwfv7+rCsp7+/zGC/4uPf 3Do9OPDv7r26vgBHeiH5BAAAAAAALAAAAAB4AFgCAAf/gAyCg4SFhoeIgneLjI2O jImRkpOUlZaWj5mai5ednp+ghpujmqGmp6gMo2asra6kkKmys6KZrmY2ubq4r7CP tMCetri6xca7Nqy+o4V3wc+PrcfT1Mmti2bLjc/cqo7ExWV94uLjfeNl1cW92s7d qdHGZfPn9fbo5OnqrLvKpIrvQjVCAi7Xn4M5tNSjcvAPAXv05klUZ0xZtkwBTQ2U 1/CPAQIgCTQMCRIiunMTKV77xSkjpoHgJHbcQXIkyZBU6pVDGRGdDX39Srl8uYhg OHEd/zBBw7Qh06c3SfbJeQ8lvopIhA6VBFMXvT5JeaBp0aIhWS1on6KJGnWqOYlA /3OZQZLVUTd3RI16FSeyI4oWZMoeJBOY7Fm1TNlKfRs3Gd1fh/BWavmpay56IA/u QHHQCeGGUEKTuQKHMxwnWlpo4fxHLJoCBxWsdXIQhc9dj+2qGiSZECe8zijvFuV7 uLc7BGNOzXyQx0E4L140HBPdCeuGBgLDaa4FjfM/cJgqeH4Vd91YvAEW792Mt/D0 zRjRDbe87x/af1AwkX5wjP8dSeV3BRnf7UDWdn/swBSCChBARUpynfebb+wVt1tw wKXnTnDHXYjcfJfxxdwfZLDGwxgNXTFGgUFUAGBrL+C3A2HXtYDGi06UdFuELHFo 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 NnowN3JgxAys2CMsZuGRdoxkESQwomEIbY+CCI0f5ZKXMw7SiVAopCEJ6MYlJFII jJwJCRkYSfqdQnCEi8rpxkiak8FQSsYjlhOhKMVRrs+UpkxkHBuZRSC28oQGEAMs KTipTEanln+85XYYRxde+pKAbzSlIuU4Qjoec36TBFssTefM0VyhOqjJE4LSWE1R XhN6bpSDMFNJBB8QAX6QPOYNQLcvcQptUkrSZK9Qo5qUbZAFvXzn5bIpT2Fy856c //uBMb/ZT9/tURj/ARB10iksNLaOgwlVaOWA2VBUphISPnikSvX5g32i0C1huyQf M3qUjZYrNR0dl6dAKlLavbGhPFykhfA50W8GDn8XDag5B8pJcel0Li/oYE8XStJ5 ptKeKs1nJPfJVQXA1IhhpKlNb9pRtenyNFAI6VRn1tC2mrQ3WP1hUY+5r+bgI6kn Eg0tVURQcZ31j0+Tw1pp1tBgAnWRjLRnSle61ZY6dl9H8MNdmWki7/WxV+Wqi13S uDAS2E2w6rPAzESrAdLSTLSmNW1bDytUVWb1m45FoVAmG8bgCa+vfHpigTr1xLRq ALSjLa1wgzvc4aL2bqn97f9q4YjYryg2q3MFHVelK1sE0LZEshGjOalTl05qRwvl Qg3LXhBY4Zr2tKQ9bnJRpd7gCna5zG1tFOLK2Ma6dJLWPUZJJkjTmr5gLsJqDQHA i862CeC3CGaveYkb3PamV8HshW98rwrR+p7QpdNVwGxFkoxfBCaTAuWugRA0LDL0 ZU6BleeCGWyB9hb3uKVtr4QRa0U9oBS6LO2qAZA6wWaGRqNxwSmJqWTiAPlWDhZA 8oIf7OAlq5fJyoVvc51bYa1yEcMtrat+9YfREPd1yFVCQwv6Ql7DLvm3TU7zmVtc 2hnT2LlYtfCVHbvPFIaEsjMNcZBHbNBiQeEoCVCug0X/i2Q2Gxq1hY6xog2NZDe3 Vg/1XKyV5zfd6Wavsng9UYr2XFbyOXE6KVayoRW9aNQi+tBoLrWj5VtPHF+Yuly9 gQK0p9+LlnPTLFLnOpFn4jF4tqGjPvShG93i4wI7yaImtJTfrAcfOPu1dqz0Y2nN YUxe9pxxCbDSdsqwX8vT1Elu8bHbfOpiF5vY4j73cmnc2khDe843iPUDB5fpMQKo NNJk4tJaVoVvE7vU5kZ3uAv97XQTW8LyZPZ8JT1pOrd0ugXIZCzD+mP/cnI7/1sZ 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 S8mVMumWfdmXQtmUdFmXYRAIADs= ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=portico.gif Content-Type: image/gif; name=portico.gif Content-Location: http://pubs.acs.org/sda/4205/portico.gif Content-Transfer-Encoding: Base64 R0lGODlhMgARAPcAAOPgvOHeu+bjvujlv+bjvePgu+fkvunmweXivefkv+vowYKB dsLApd/cueThvO3qw+ThvcXDqc/Nrrm3ncbEqOjlwO/sxevows/Nr4uKfNzZuHd2 btzZt5CPgnNza5CPf+Lfvbq5n56di+3qxOzowri2nc3LrcC+pbq4oKCejLu5n+Xi vuPgveXiv83KrLa0nb+9pdTSs7+9pKKgjb+9oe7rxLq4n7a0nJuZhpqZhtPQsnZ1 a3p5cKqokubivXx7cI6NfoaEd3FwaHZ2bd7buezpw8jGqZybh+jkv+bjv3Z1bImI fKOgjJ6ci56cit3buWxsZcrHqpybiZWUhMjGq2ZlYNHOr4iIeWRkX3Nya9vYuHd2 a8/Or7+8ocvJraWkkuflv8G+pMrIq9LPstHOsIiHea2sluHevsK/puXiwMC+o7+9 oHRzbHNzauPhvNbTtHh3buXivHh3bWxrZNrXt2lpY8LAp8PCp9bUtGpqZdrYt7y6 osbEqZeVhcTCqmpqY+rmwmFhXurmwdXSso6OfpiXhmVlYO/sxGNjX7SzmsjGqp6c jODdut/curq5oayqlOnlwJ+ejLWzm6Sij+Ddu9HOssXDqGpqZLOxmpiWhNXStJeW hIWEeJSSg5ybiMTCptvYt8TCqZ+di7Szm7m2nr68o8fEqOnmwODducjFq3d2bW5t ZpWUgsC+pG5uZn18cYKBdMbDqYiHe6qok2xrZmdmYo6NgIWEd3t6cOHevGtqZKSi jWppY8C9o5eWhcXDqnFwaZ6divDsxJmXhbu6osPApbq5orq5oMPAp/PwxmlpYsnH q39+dIyLf768oZGQg2FhXXFwatjWtZmXh21sZb68oMbDqGloYq2smHRza7CumbKw mYyLe9fUtKOijgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAyABEAAAj/AAEIHEiwoMGDCBMqXMiw ocOHECNKnKiwwDJrXlwICBAAgZEIsRQhCOAAgwoKFAigCoFCBoNSLyg0YqADQAAD VlqlYiDBZgIToX7xWVEgwABCss7gEoHEwLA+oOh8yDFgQA8sWoJ0ImLrxCJafr4A aVFngoADKXhI4FDsVoNTwZZI4xApyMYBOEQIQ+HqQokNFQQCUrLtQSJdFQZBi5FA QZgdggQ0aAGsiwJi0RoQ6EgJwh0hueIUuJDBSQK8u5JpEzJC1YwDHA9sWmChBDUL RmrpcUAAzZCNBdJ4WFPjBysSHAMUOMBsmgKOBpxdYzHgyAIYZSwl4HXDAEckjzaM /9hTpQknEysCELCzYXOAJGxoPGiTYkByo9lm2Q8g4JOhJ9V9gEEDAiQwxAyQxJbJ AocckwcQHiRgEwEnwLERfzvQUFwGRdx3wAKFwHZTNcoAMIAnTChQlAGYyEGCAw4U oUQPD4SwigWwvHJAAT5EwIN3/G3RywUTBKLJAAUgIAACamSRBAIAPNCBLxUMsAQ3 YCQHQQ5TjEFGB6IIMIAZiLCAwBxXQGAANpdwIFAAf0gipjdQ3NANA88QYcAkzUgQ gxQZuAEACBEgw0hyBRAghg02uLAZAJXAoAEBbziiAQBUGFMTABrIgIFNAuAxigov RAEqF6RMYIoPg1Lk6quwxgcq66y0MhQQADs= ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=COUNTER.gif Content-Type: image/gif; name=COUNTER.gif Content-Location: http://pubs.acs.org/sda/4205/COUNTER.gif Content-Transfer-Encoding: Base64 R0lGODlhMgARAPcAAP///5OTk3h4eGxsbHl5eXV1dW9vb5KSknZ2dnFxcWhoaG5u bpGRkYmJiXd3d3BwcGtra21tbXNzc4yMjGVlZXR0dGpqaouLi39/f19fX4CAgGNj Y4aGhuzs7IODg5aWlnJycvX19WdnZ52dnTQ0NJeXl35+fmlpabS0tIKCgmJiYu3t 7X19fVlZWVdXV9TU1EhISIqKirm5uZqamu7u7k1NTefn5/Hx8ZmZmURERJSUlHt7 e9zc3Hx8fJubm4SEhKGhoYGBgcvLy1hYWL+/v1ZWVqSkpFpaWlxcXJiYmE5OTqmp qTg4OHp6elRUVNHR0fT09I2NjTc3N8fHx0ZGRjAwMKamptra2tvb26+vrykpKays rMzMzI+Pj15eXvr6+pWVlU9PT+Li4s7OzsnJybOzs729vfb29oWFhUFBQcXFxTU1 NVtbWy4uLi8vL56enisrK+rq6vn5+fj4+GBgYK2trUlJScLCwmZmZsbGxvDw8JCQ kKKiot3d3T09PUJCQpycnFJSUktLS83NzfPz8/Ly8lFRUScnJ2RkZCUlJenp6Y6O jujo6Dw8PCYmJuTk5NDQ0D8/P6Ojozo6OigoKKioqC0tLe/v76CgoFNTU6qqqrGx sd7e3ry8vDAwLzk5OT4+PuPj42FhYfv7+4eHh5iYlzExMbCwsP39/bKysl9fYMjI yKenp5SUlba2ttHR0CAgIFRUU/z8/pubmtfX1/f399/f30NDQ8/Pz+bm5oiIiEBA QMrKyr6+vt7e32lpaH5+f/7+/qWlpeDg4Ds7O29vcCoqKp+fn+Xl5YCAgfz8/HFx cLu7u9bW1iMjIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAyABEAAAj/ACd8CMCA4BtABQ8EIDji TcGFBIGUULjwAA4gDxdK0gGRAZAkFAN8aJCCQIIHBgwA0pFAgoEEMD/4iBChAAID ESpxGGAAQQULDawoGEA0Qh0BEIgqMNIgKU8BElhQ8EBmSYYuDVQMkDHGhJcLF0xs gSDi2I4kBICAUSFBUwMfVlCUQWFkhAe5KITNwFBJ7gcFCwoYiAMAABgNQYrcKYwM EQYWYORscEGrS5QIWOKwKfDlQokQhQF0OKAjNJQSAvSEPpBBQZZgMfo80pCgGAAZ HgCMWOBgAo0hNSD9QKOCCwAQFG5wiMFiyZwZGi4w4NRgUYoLCTqkarBCSIsTWDp5 /7rgK8WGVmdiMRnE5cQCDjSU3BrUA0MLMgB8tNATRMOaBSEUEQkHXajBRCTEpADB JRhYsskVQxhAQxRrCAJDAl5k8cIkUswQygAUaLACFZMIgQABhkwBABcu0NAEASQA WIQfGuhCxh8w7LLDBisQkIgMLygBwg0IuCFFFRC0YEYvbrSBgSIDIEFAB6BUscoD INihxhUrQKCIBBIYI0IINZBAAAFzPGKDJgYcwQgRRozCRw7L3BDBIVVoQUEgZrji iCMIxKGAExV0QAIleVhgQRq8SGLDCGIMAAEsokBBBRwFgBAaMxZkIkZhfcBARQKF OKAFCYdQ4IQMRGhBSRCMiP8wBAIdSAFHHgMskMMYE8gwTC4PRODMBlDY0QYCJjxx hAqCPOCCDafwgEMiYQywwh5wZLBEBUNsgYUUbmBiiwgbTPnHGkI8gEANT+wBDABQ VCBBGxaEEAgTLHBwhyUkmEIAHR0oUAohMBiCxwtTkFDCHBrQcYEsqnxyhRoUQCCB HC40wkMEOzjxhA+ZfCEHAU0wkUAIR6ThwQVTNJKDHybgQUMPvwCQTA0nMADAK7UQ kSkbZ9ig4g8PEODFF83cccMRDdDxghVpjAFACh7k0MQZFNQwwQSEPPGCGRMYcEkM VIiBSxEVZMADAMoggAEGSrBSGCROmIBGGEQUJoQSB1jNwEMWMGACQAwNhPEDKgu4 oFBohXzgQAgB2FEHAAUIsAEIdUzQQhRoZKDCLJssgAQpEyBxwhIoCMAGDgXEYEIG D3yQwgFIJJCEBRuM0MQMOMywSAk7BFBABgmMUAAGFSygQFJJMDDAAycANsABH/Ck AGAQGOGBCBGAYAAFHLxhgQEnPPDAFhKIcD0ifHCARwQPLACBAQSw4AACPkXRQOUC 9F9AAxMoAAH654AC6CAIDiCgA35wgAIksH8l6EH/BFCBA3gAAQ4ggAN6IIGAAAA7 ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=crossref.gif Content-Type: image/gif; name=crossref.gif Content-Location: http://pubs.acs.org/sda/4205/crossref.gif Content-Transfer-Encoding: Base64 R0lGODlhMgARAPcAAAZopbnU5qqqqg4ODrXS5FGVvxQUFBlyqzyJuIeHhwBhoDY2 Nm6mymOhx2KfxQprqFaYwk+Vv5a/2QprpoS10gBioQBkolKXwE2TvgBZm0qSvQxt pw1rpgBbnBp1rBoaGiIiIv///wAAAAUFBfT09Pf39/Pz89ra2sTExNTU1Pv7++jo 6Ly8vPDw8Orq6vr8/cnJydHR0bm5ucHBwdLS0isrK/Hx8evr68vLy8zMzPz8/Pb2 9uXl5eTk5Pj4+L6+vpaWlvL3+u71+fr6+r+/v5iYmOPj48bGxjIyMsDAwObm5q7O 4tzc3KSkpPn7/ZzD2xBlo/7+/gBjosXFxc7Ozs/Pz+7u7u/v71iZwuHh4fb5/Pf6 /MfHx9Hj7nqtzs3NzdbW1sLCwqDF3L29vZubmwBengBfn8rKyunp6QNmo/n5+QBc nQBmo9DQ0ABdnuDg4P3+/t/f37u7u9vp8gBen63N4ezz+Orr6+vx9v///rGxsRFt qI6OjrfU5c/OzkePvFRUVCZ7sPX19cfd65uYl6WlpQ9tp+bl5dXPzLW1tZKSkhhz qx51rHKqzOry99rp8oy31MTDw7m6utTb4Lu8vHquzprC2p7E23+y0Z/E3ABeoAZn pOjx99nY1+jy9/P3+6rL4PT4+62trY251cPDw7W5uxJrp9DR0vD2+svg7Mvf7IKy 0X5+fludxECKuUSOu5+fn3h4eIa20xByruTv9cHa6AZiobe3t2ejyNnZ2XNwbZK9 2CgoKPLy8m1tbUZmetXl8GSewcrLy6TI3qfJ36fK3wJkoid7r9rZ2eHt9EiAoxRx quzs7JycnApoo8jd66Ojo8Tb6lmbw1qbw/L3+wRmo/39/TOEtfr9/sjIyKnK309P T9LOyyF5r3mszf7+/7q6ui0tLdzq8t7r84WFhYi31N7e3sXc6tfX13V1dYu31ZCQ kPHw8BRyqhpyqnCpzKHG3QdqpRx2rR53rZqamufn53SqzXaqzPj7/e30+VaYwevy 9il7sPv7+rS0tLKysiH5BAAAAAAALAAAAAAyABEAAAj/AEMIHEgwhIp6OcgAKQTG RZSCECNKnFiwxxdJNG6QcJGCSJUTQyiKHDmQBIocaga6UELlh5wmRWCxOMGjBEmI TN7YjLgiCQmBLdDJqGLDB8EeRMytoETjzs0QVhaIGPAvYpwwAk3AGHNlojUUYEL4 4AJjxw1/Z3pBSxKihQB6cQQKmAokC0QeU0LoSDHDBMksRGzayMFHBC+pIHAYGGFA hL8v4aamO1FwB4sQV8CteBrChIwWAsmIEMEYyDYRMlQMANFkAGkkRwqy2JEChQ7O AoeM2Sxq9I8SzBrXQPLhA5oiImpAPHHIDzLcBSOx0zOVhYoQUhOUIBFbUfKC/biV /5ok8MUWgUIGBrFTMB+qgdjwnCI0lQeKEqRcD2BsYp0IEATl0YkyzjwwjycOQFHO BbZUIoQ+HGzCTx8hOPIHAApoEAIxBxgzyy+6kKPCECxsxAogCYCGQiy+7BTCPsFo woY8G4wDgQKLuGHGEgi4sYEHUiigyhMZtENBBNR0Q8cFDOyCyEA6TGFERM1MKRAm D1QgARyfvFCAAhNYIksAUqQRzQsIdPDOIApIwQAnIWCQwTHFhKCGHH4JFAMOBWUD Qy4DNQKAFPDAEYQTBXSAhUDnVJDGMy+80kED38xRQBnLJONEJgdkYI9BM7wxEBoy bBZCDD2koMRAtEyzBhsexI7TBRYZtCJQKIGYscEiFpRRiwQOPBEPHXVoIEYEa1wz UAxh5BkCXz+0QYIwD6mHxR4TLCJOA1DgMtAcrhgyASNihLCEKWxwIA0+GFQDgDsE EGQDDLcwcQMNibTBBRWCQPSIOt4MowUBkFA4UCoUeKHNeUKA4sUqwITQxSj3XKJF QSScgMMZMVgRAglGDRQQADs= ------------RCIbvvOjaJ8uSTfvfHqKc9 Content-Disposition: inline; filename=scriptaculous.htm Content-Type: text/html; charset=UTF-8; name=scriptaculous.htm Content-Location: http://pubs.acs.org/templates/jsp/js/scriptaculous.js?load=effects,dragdrop Content-Transfer-Encoding: 8bit // script.aculo.us scriptaculous.js v1.8.1, Thu Jan 03 22:07:12 -0500 2008 // Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the // "Software"), to deal in the Software without restriction, including // without limitation the rights to use, copy, modify, merge, publish, // distribute, sublicense, and/or sell copies of the Software, and to // permit persons to whom the Software is furnished to do so, subject to // the following conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // // For details, see the script.aculo.us web site: http://script.aculo.us/ var Scriptaculous = { Version: '1.8.1', require: function(libraryName) { // inserting via DOM fails in Safari 2.0, so brute force approach document.write('